??????????????? Java 8 ????Ч?????????????? Alex Zhitnitsky ?????????????????????? Java ?????——iterator ?? for-each ???——?? Java 8 ?????????????
????Java 8 ?е? Lambda ??????????Stream??????????????????? Java ???????????????????????Щ?μ?????????????????????????????б??????????????Щ?????????????????????Щ?????????????????????????????????????????????????????Щ??????в????
??????????????????????????? ArrayList ?????????????????? Java 8 ?е??·?????в???????????????????????е?????????
?????????????? Java 8 ????????????
????????????????????????????????????????λ????????????????????? ArrayList??????????? 100000 ???????????????? 7 ???????????????е????????????????????飺Java 8 ???????????????? Java ??????????????
????????????????????????

????????????????????? 0.042??????????????????????β????????????
????С?????
?????????Java 8 ???????κ?????·?????????? 5 ????????????????ü?????????????? lambda ????????????Ч???????????????д?????????????????????????????syntactic suger????
?????????????? for-each ???????? ArrayList ??Ч??????????????????????? for ??????????????
?????? Java 8 ??????У?????????????????????С??????Щ??????????????3??????е??????
????Lambda ???????????????????????????????????????????? lambda ???????????????????? API ???????
???????????е???????????????????????????? lambda ?????????к?????????????????????????????????????????????????????????????????????????????????????β???????????????????????????λ??????????
????????????????????????????????????????????
????????????
iteratorMaxInteger()——?????????????б??
public int iteratorMaxInteger() {
int max = Integer.MIN_VALUE;
for (Iterator it = integers.iterator(); it.hasNext(); ) {
max = Integer.max(max?? it.next());
}
return max;
}
forEachLoopMaxInteger()——??????????????? For-Each ????????б????????? Java 8 ?? forEach??
public int forEachLoopMaxInteger() {
int max = Integer.MIN_VALUE;
for (Integer n : integers) {
max = Integer.max(max?? n);
}
return max;
}
forMaxInteger()——??ü??? for ??????????????б??
public int forMaxInteger() {
int max = Integer.MIN_VALUE;
for (int i = 0; i < size; i++) {
max = Integer.max(max?? integers.get(i));
}
return max;
}
????????????
????parallelStreamMaxInteger()——??? Java 8 ???????????б??
????public int parallelStreamMaxInteger() {
????Optional max = integers.parallelStream().reduce(Integer::max);
????return max.get();
????}
????lambdaMaxInteger()——??? lambda ?????????????б?????????д???
????public int lambdaMaxInteger() {
????return integers.stream().reduce(Integer.MIN_VALUE?? (a?? b) -> Integer.max(a?? b));
????}
????forEachLambdaMaxInteger()——????????е?????????????? Java 8 ?? forEach ?????????????????????????? final ???????????????????? final ?????????????????????????????????o??????
public int forEachLambdaMaxInteger() {
final Wrapper wrapper = new Wrapper();
wrapper.inner = Integer.MIN_VALUE;
integers.forEach(i -> helper(i?? wrapper));
return wrapper.inner.intValue();
}
public static class Wrapper {
public Integer inner;
}
private int helper(int i?? Wrapper wrapper) {
wrapper.inner = Math.max(i?? wrapper.inner);
return wrapper.inner;
}