???????collect()????Map
????????????? Stream ??????????????????????????????????顢??????????????? Map ?????????? Stream ???? Map ??????????????????? Map ?? key ?? value ?????????????????????????????????????????????????? collect() ???????? Map ??
??????? Collectors.toMap() ???????????????????????????? Map ?? key ?? value ??
??????? Collectors.partitioningBy() ???????????????????ж???????????????
??????? Collectors.groupingBy() ??????????????????? group ??????????
???????1????? toMap() ?????????????????????????????????????????????? Collectors.toCollection() ???е?????????′???????????б???????? <??? gpa=""> ???? Map ?????????????????
????// ???toMap()??????GPA
????Map<Student?? Double> studentToGPA =
????students.stream().collect(Collectors.toMap(Functions.identity()??// ???????key
????student -> computeGPA(student)));// ???????value
???????2????? partitioningBy() ?????????????????????????? Stream ?е?????????????????????????????????????????????????????????????????????????????д????????????????????????????????
????// Partition students into passing and failing
????Map<Boolean?? List<Student>> passingFailing = students.stream()
????.collect(Collectors.partitioningBy(s -> s.getGrade() >= PASS_THRESHOLD));
???????3????? groupingBy() ????????????????????????????????SQL?е? group by ????????????? groupingBy() ????????????????????з??飬?????????????????? Map ?????? key ??????д???????????????????з??飺
????// Group employees by department
????Map<Department?? List<Employee>> byDept = employees.stream()
????.collect(Collectors.groupingBy(Employee::getDepartment));
???????????????????÷?????Щ????????????????????SQL????? group by ?????Э??????????????? 1. ???????????????飬2. ?????????????????????? ??Java??????????????????????????????? groupingBy() ????????????????????? groupingBy() ??????????????????????????????????????????????????????????????????????????????????? ????????? ?????????????????????????? ????????? ( downstream Collector )??
????// ???????????????????????????
????Map<Department?? Integer> totalByDept = employees.stream()
????.collect(Collectors.groupingBy(Employee::getDepartment??
????Collectors.counting()));// ?????????
??????????????????????????SQL??????????????и????????????????????????????ε?????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????? Employee ???? ??????????·????????
????// ???????????????飬????????????????
????Map<Department?? List<String>> byDept = employees.stream()
????.collect(Collectors.groupingBy(Employee::getDepartment??
????Collectors.mapping(Employee::getName??// ?????????
????Collectors.toList())));// ?????ε??????
???????????????????ж?Java???????????????????????????????Java?????????????
???????collect()???????join
?????????????????????????????????????? Collectors.joining() ????????????????? for ????? Collectors.joining() ????????????д?????????????????????????????????????????????
????// ???Collectors.joining()????????
????Stream<String> stream = Stream.of("I"?? "love"?? "you");
????//String joined = stream.collect(Collectors.joining());// "Iloveyou"
????//String joined = stream.collect(Collectors.joining("??"));// "I??love??you"
????String joined = stream.collect(Collectors.joining("??"?? "{"?? "}"));// "{I??love??you}"
????collect()????????????
?????????????? Collectors ????????????????????????????????????????????????????? collect(Supplier<R> supplier?? BiConsumer<R??? super T> accumulator?? BiConsumer<R??R> combiner) ?????? ????κ?????????????? ?????? Collectors ??????????????????????????????????????????????????