0
点赞
收藏
分享

微信扫一扫

java-Collectors类

在Java中,Collectors 类是 Java Stream API 的一部分,它位于 java.util.stream.Collectors 包中。Collectors 类提供了许多有用的收集器(Collector),这些收集器可以在流操作(如 map(), filter(), reduce() 等)之后使用,以将流中的元素累积到集合(如 List, Set, Map 等)或其他数据结构中。

Collectors 类提供了一系列静态工厂方法来创建不同类型的收集器,包括:

转换为集合:如 toList(), toSet(), toCollection() 等。 汇总操作:如 summingInt(), averagingDouble(), counting(), maxBy(), minBy() 等。 分组操作:如 groupingBy(), partitioningBy() 等。 连接操作:如 joining()(用于字符串)。 映射操作:如 mapping()(结合其他收集器)。

以下是一些 Collectors 类的常见用法示例:

将流中的元素收集到列表中:

List<String> list = Arrays.asList("a", "b", "c");
List<String> collectedList = list.stream().collect(Collectors.toList());

计算流中元素的数量:

long count = list.stream().collect(Collectors.counting());

将流中的元素分组到Map中:

Map<Character, List<String>> groupedByFirstChar = list.stream()
    .collect(Collectors.groupingBy(s -> s.charAt(0)));

对流中的元素进行过滤和求和:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
int sum = numbers.stream()
    .filter(n -> n % 2 == 0) // 过滤偶数
    .mapToInt(Integer::intValue) // 转换为int流
    .sum(); // 求和

// 使用Collectors.summingInt
int sumUsingCollectors = numbers.stream()
    .filter(n -> n % 2 == 0)
    .collect(Collectors.summingInt(Integer::intValue));

连接字符串流中的元素:

List<String> words = Arrays.asList("Hello", "world", "!");
String sentence = words.stream()
    .collect(Collectors.joining(" ")); // 使用空格连接

自定义收集器:

Collectors 类也提供了 Collector 接口的实现工具,如 Collector.of(),允许你创建自定义的收集器。

使用 Collectors 类可以极大地简化流操作的结果收集过程,并使得代码更加简洁和易读。

举报

相关推荐

0 条评论