Java 中的 Collector 是用于将 Stream 中的元素收集到一个数据结构中的工具。它们可以将 Stream 中的元素收集到 List、Set、Map 等数据结构中,并且可以对元素进行操作或对结果进行汇总。
Collector 接口中定义了几个方法,其中最重要的是三个方法:
- supplier():创建一个新的可变容器,用于存储流中的元素。
- accumulator():将流中的元素逐个添加到容器中。
- finisher():对容器进行最终的转换,得到最终的结果。
当我们使用 Collector 收集器时,通常会使用 Collectors 类中提供的静态工厂方法来创建 Collector。这些静态方法包括 toList()、toSet()、toMap() 等,用于将元素收集到不同的数据结构中。
以下是一个使用 Collector 的简单示例:
Listlist = Arrays.asList("apple", "banana", "cherry"); List collectedList = list.stream() .filter(s -> s.startsWith("a")) .collect(Collectors.toList()); System.out.println(collectedList); // 输出:[apple]
在这个例子中,我们通过 filter() 方法筛选出以字母"a"开头的元素,然后使用 collect() 方法将筛选后的元素收集到一个 List 中。最终输出的结果是包含"apple"的 List。