【发布时间】:2021-06-16 08:11:03
【问题描述】:
在 java 8 中,Stream API 帮助我们以非常干净和更少的代码来完成我们的工作。我是这些流 API 的忠实粉丝。但是很少有操作哪种有助于解决同一类型的问题,并且不确定何时使用哪种操作虽然选择起来并不难,但只是想知道任何人对这些有任何特定的用例。我所说的操作是:-
中间操作:- min 和 max
终端操作:collect 和 Collectors 使用 minBy 和 maxBy 的类策略
List<String> randomString= Arrays.asList("AA","AAA","A","AAAA","AAAAAA","AAAAAAAAAAAAAAAAAA");
String maxByIntermediateMax = randomString.stream().max(String :: compareTo).get();
String minByIntermediateMin = randomString.stream().min(String :: compareTo).get();
System.out.println("Intermediate Min() :- "+minByIntermediateMin+" Intermeidate Max() :- "+ maxByIntermediateMax);
String minByCollectorsMinBy = randomString.stream().collect(Collectors.minBy(Comparator.naturalOrder())).get();
String maxByCollectorsMaxBy = randomString.stream().collect(Collectors.maxBy(Comparator.naturalOrder())).get();
System.out.println("Collectors MinBy :- "+minByCollectorsMinBy+ " , Collectors maxBy is :- "+maxByCollectorsMaxBy);
输出
Intermediate Min() :- A Intermeidate Max() :- AAAAAAAAAAAAAAAAAA
Collectors MinBy :- A , Collectors maxBy is :- AAAAAAAAAAAAAAAAAA
【问题讨论】:
-
与Collectors.summingInt() vs mapToInt().sum()中的考虑基本相同,顺便说一句,当您已经了解
Comparator.naturalOrder()时,无需通过String :: compareTo创建新的比较器。 -
... 至少除非有任何可以证明的性能优势。
标签: java java-8 java-stream collectors