??????????????Java 8 Explained: Applying Lambdas to Java Collections????
????Lambdas??????Java 8????????Java??????????????á??????????????????????????????????????????????????н???????lambda????????????????default methods?????defender methods??????????????????????????????Java??????????????????????bulk operation????
????????????
??????????????????????????????“??Java????????????????????????????????????????lambda????????”????????????????lambda?????Java 8????????????????????????????μ???ü??????????????????????????????????????????У?????lambda????????????????????????????
????????????????
??????????Java????????????????????????????????????????????????for????while?????????????????????????????LambdaJ?????????
????List persons = asList(new Person("Joe")?? new Person("Jim")?? new Person("John"));
????forEach(persons).setLastName("Doe");
???????????????????????????????????last name????????????????person??????????????????????????????????е???????????????Java 8???????????????
????persons.forEach(p -> p.setLastName("Doe"))
????????????????????????????????????е??????????????СС?????????????????????????????仯?????????????????????????????μ?????stream??API??
??????API
?????μ?java.util.stream?????????JDK?????????????????Java 8???filter/map/reduce??????????
??????API????????????????????д??л?????е??????
????List persons = …   // sequential version
????Stream stream = persons.stream();   //parallel version
????Stream parallelStream = persons.parallelStream();
????java.util.stream.Stream????????????????????????????????????????????????????????????????????????
????Filter
???????????????????????????????????????????????????Stream??????????filter???????????????????????Predicate??????????????????????lambda??????
????List persons = …
????Stream personsOver18 = persons.stream().filter(p -> p.getAge() > 18);
????Map
?????????????????????Щ????????????????????Map??????????????????Function??????Function<T??R>?????T??R???????????????н??????????????β???????????????????????????????????????????????????
????Stream students = persons.stream()
????.filter(p -> p.getAge() > 18)
????.map(new Function() {
????@Override
????public Student apply(Person person) {
????return new Student(person);
????}
????});
???????????????????????????lambda??????д????
????Stream map = persons.stream()
????.filter(p -> p.getAge() > 18)
????.map(person -> new Student(person));
????Lambda??????????map????????????????????????????????????????д????????
????Stream map = persons.stream()
????.filter(p -> p.getAge() > 18)
????.map(Student::new);
????Collect
????“??”????????????????????????????????????????????????????????????????????????????????????Stream API????????“??”???????collect()?????????е??????????????????????????????
????List students = persons.stream()
????.filter(p -> p.getAge() > 18)
????.map(Student::new)
????.collect(new Collector>() { … });
?????????????????????????????????Collector????????????Collectors??????
????List students = persons.stream()
????.filter(p -> p.getAge() > 18)
????.map(Student::new)
????.collect(Collectors.toList());
?????????????????????????????????????????
????List students = persons.stream()
????.filter(p -> p.getAge() > 18)
????.map(Student::new)
????.collect(Collectors.toCollection(ArrayList::new));
???????к????
???????????μ?Stream API??????????????????????????ν???л?????е??????????????????е??????????????????????е?????????????е??
????List students = persons.stream()
????.parallel()
????.filter(p -> p.getAge() > 18)  // filtering will be performed concurrently
????.sequential()
????.map(Student::new)
????.collect(Collectors.toCollection(ArrayList::new));
???????????????????????????????в????????????????????????????????????????????
???????
??????????????????μ?Stream API??lambda??????Java 8?????????μ?????????????????????????к????????????????????????????????????????????