引言
在 Java 的 Stream API 中,Collectors 是一个非常强大的工具类,它提供了许多静态方法,用于将 Stream 的元素收集到集合、字符串或其他类型的结果中。使用 Collectors,我们可以轻松地进行数据聚合和转换操作。
文章目录
什么是 Collectors?
Collectors 类是 Java 中的一个实用工具类,包含了一系列静态方法,这些方法用于创建各种常见的集合操作。它们用于将流中的元素累积到某些结果中,例如 List、Set、Map 等,还可以进行各种统计操作,如求和、平均、最小值、最大值等。
Collectors 类位于 java.util.stream 包中,通常与 Stream 的 collect() 方法一起使用。它的设计遵循了函数式编程的原则,使得数据处理变得更加简洁和高效。
常用 Collectors 方法详解
下面将详细介绍一些常用的 Collectors 方法,并通过通俗易懂的示例来展示它们的使用。
toList()
toList() 方法是最简单的收集器,它将流中的元素收集到一个 List 中。这是一个无参数方法,返回一个新的 List。
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class CollectorsToListExample {
public static void main(String[] args) {
List<String> fruits = Arrays.asList("apple", "banana", "cherry");
List<String> result = fruits.stream().collect(Collectors.toList());
System.out.println(result); // 输出 [apple, banana, cherry]
}
}
在这个例子中,将一个包含水果名称的 List 转换为一个 Stream,并使用 Collectors.toList()
方法将其收集回一个 List。
toSet()
toSet() 方法将流中的元素收集到一个 Set 中,自动去除重复项。这也是一个无参数方法,返回一个新的 Set。
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class CollectorsToSetExample {
public static void main(String[] args) {
List<String> fruits = Arrays.asList("apple", "banana", "cherry", "apple");
Set<String> result = fruits.stream().collect(Collectors.toSet());
System.out.println(result); // 输出 [banana, cherry, apple]
}
}
在这个例子中,有一个包含重复元素的 List,通过 Collectors.toSet()
方法,我们将其收集到一个 Set 中,从而去除了重复元素。
toMap()
toMap() 方法需要两个函数:一个用于生成键,另一个用于生成值。它将流中的元素收集到一个 Map 中。
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public cla