在Java中,Collectors
类是 java.util.stream
包的一部分,它提供了多种静态方法,用于在流(Stream)操作的最后阶段将元素汇总或整理成不同的形式。以下是 Collectors
类中一些常用的方法:
-
toCollection:
- 将流元素收集到一个指定的
Collection
中。
List<String> list = stream.collect(Collectors.toCollection(ArrayList::new));
- 将流元素收集到一个指定的
-
toList:
- 将流元素收集到一个
List
中。
List<String> list = stream.collect(Collectors.toList());
- 将流元素收集到一个
-
toSet:
- 将流元素收集到一个
Set
中,去除重复元素。
Set<String> set = stream.collect(Collectors.toSet());
- 将流元素收集到一个
-
toMap:
- 将流元素收集到一个
Map
中,需要提供键和值的映射函数。如果有重复的键,需要提供一个合并函数。
Map<String, Integer> map = stream.collect(Collectors.toMap(键映射函数, 值映射函数));
- 将流元素收集到一个
-
toMap with merge function:
- 当键冲突时,提供一个合并函数来解决冲突。
Map<String, Integer> map = stream.collect(Collectors.toMap(键映射函数, 值映射函数, 合并函数));
-
groupingBy:
- 根据某个属性或函数将流元素分组,并收集到
Map
中。可以与toMap
结合使用,对分组的结果进行进一步的收集。
Map<String, List<String>> groupedMap = stream.collect(Collectors.groupingBy(分类函数));
- 根据某个属性或函数将流元素分组,并收集到
-
groupingBy with downstream collector:
- 提供下游收集器,对分组后的元素进行更复杂的收集操作。
Map<String, Set<String>> groupedMap = stream.collect(Collectors.groupingBy(分类函数, Collectors.toSet()));
-
filtering:
- 过滤流元素,只收集符合条件的元素。
List<String> filteredList = stream.collect(Collectors.filtering(Predicate, 下游收集器));
-
collectingAndThen:
- 在收集完成后,对结果进行进一步的处理。
List<String> processedList = stream.collect(Collectors.collectingAndThen(Collectors.toList(), list -> { // 对list进行处理 return list; }));
-
joining:
- 将流中的元素连接成一个字符串。
String joinedString = stream.collect(Collectors.joining(", "));
-
reducing:
- 通过某个连接动作将所有元素汇总成一个汇总结果。
Optional<Integer> sum = stream.collect(Collectors.reducing(0, Integer::sum));
-
summingInt/summingLong/summingDouble:
- 对数值流进行求和。
int sum = stream.collect(Collectors.summingInt(Integer::intValue));
-
maxBy/minBy:
- 找出流中的最大或最小元素。
Optional<String> max = stream.collect(Collectors.maxBy(Comparator.naturalOrder()));
-
counting:
- 计算流中元素的数量。
long count = stream.collect(Collectors.counting());
-
partitioningBy:
- 根据谓词对流元素进行分区,返回一个Map,其中键是布尔值,值是元素的集合。
Map<Boolean, List<String>> partitionedMap = stream.collect(Collectors.partitioningBy(Predicate));
这些是 Collectors
类中一些常用的收集器方法。它们可以帮助你将流中的元素汇总成不同的集合类型,或者进行更复杂的聚合操作。