Collectors
是 Java 8 引入的一个工具类,属于 java.util.stream
包,主要用于提供一些静态方法,这些方法可以将流(Stream)中的元素收集到集合中,如 List、Set、Map 等。它是 Stream
API 中非常重要的一部分,帮助我们在流的操作中完成终端操作(terminal operation),将流的数据转换成集合或其他类型的结果。
以下是一些常用的 Collectors
方法及其示例:
-
toList()
:-
将流中的元素收集到一个
List
中。 -
示例代码:
import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class CollectorsExample { public static void main(String[] args) { List<String> list = Stream.of("a", "b", "c", "d") .collect(Collectors.toList()); System.out.println(list); // 输出: [a, b, c, d] } }
-
-
toSet()
:-
将流中的元素收集到一个
Set
中。 -
示例代码:
import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; public class CollectorsExample { public static void main(String[] args) { Set<String> set = Stream.of("a", "b", "c", "a") .collect(Collectors.toSet()); System.out.println(set); // 输出: [a, b, c](顺序可能不同,因为 Set 不保证顺序) } }
-
-
toMap()
:-
将流中的元素收集到一个
Map
中,需要提供两个函数:一个生成键的函数,一个生成值的函数。 -
示例代码:
import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; public class CollectorsExample { public static void main(String[] args) { Map<Integer, String> map = Stream.of("a", "b", "c") .collect(Collectors.toMap(String::length, s -> s)); System.out.println(map); // 输出: {1=a, 2=b, 1=c} } }
-
-
joining()
:-
将流中的元素连接成一个字符串,可以指定分隔符、前缀和后缀。
-
示例代码:
import java.util.stream.Collectors; import java.util.stream.Stream; public class CollectorsExample { public static void main(String[] args) { String result = Stream.of("a", "b", "c", "d") .collect(Collectors.joining(", ", "[", "]")); System.out.println(result); // 输出: [a, b, c, d] } }
-
-
groupingBy()
:-
根据某种标准对流中的元素进行分组,并将结果收集到
Map
中。 -
示例代码:
import java.util.Map; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class CollectorsExample { public static void main(String[] args) { Map<Integer, List<String>> groupedByLength = Stream.of("a", "bb", "ccc", "dddd") .collect(Collectors.groupingBy(String::length)); System.out.println(groupedByLength); // 输出: {1=[a], 2=[bb], 3=[ccc], 4=[dddd]} } }
-
-
counting()
:-
计算流中元素的数量。
-
示例代码:
import java.util.stream.Collectors; import java.util.stream.Stream; public class CollectorsExample { public static void main(String[] args) { long count = Stream.of("a", "b", "c", "d") .collect(Collectors.counting()); System.out.println(count); // 输出: 4 } }
-
-
summarizingInt()
:-
对流中的整数元素进行统计,包括总数、总和、最小值、最大值和平均值。
-
示例代码:
import java.util.IntSummaryStatistics; import java.util.stream.Collectors; import java.util.stream.Stream; public class CollectorsExample { public static void main(String[] args) { IntSummaryStatistics stats = Stream.of(1, 2, 3, 4, 5) .collect(Collectors.summarizingInt(Integer::intValue)); System.out.println(stats); // 输出: IntSummaryStatistics{count=5, sum=15, min=1, average=3.000000, max=5} } }
-
这些是 Collectors
类中的一些常用方法,它们在处理流时提供了强大的功能,使得数据处理和转换变得更加方便和高效。