为了完整起见,这里介绍了如何将重复项“减少”到只有一个。
如果你同意最后一个:
Map<String, Person> phoneBook = people.stream()
.collect(groupingBy(x -> x.name, reducing(null, identity(), (first, last) -> last)));
如果你只想要第一个:
Map<String, Person> phoneBook = people.stream()
.collect(groupingBy(x -> x.name, reducing(null, identity(), (first, last) -> first != null ? first : last)));
如果你想要last but“address as String”(不使用identity()作为参数)。
Map<String, String> phoneBook = people.stream()
.collect(groupingBy(x -> x.name, reducing(null, x -> x.address, (first, last) -> last)));
源
因此,本质上,groupingBy与还原收集器配对,开始表现得非常类似于toMap收集器,有一些类似于它的mergeFunction…结果是一样的……