Collectors所有相关方法介绍及代码示例
时间: 2024-03-01 18:55:05 浏览: 20
Collectors是Java 8中Stream API提供的一个工具类,用于对Stream流进行汇总操作。它提供了很多有用的方法,下面我介绍所有常用的方法及对应的代码示例。
1. toList()方法:将Stream流中的元素收集到一个List集合中。
```java
List<String> list = Stream.of("a", "b", "c").collect(Collectors.toList());
System.out.println(list); //[a, b, c]
```
2. toSet()方法:将Stream流中的元素收集到一个Set集合中。
```java
Set<String> set = Stream.of("a", "b", "c").collect(Collectors.toSet());
System.out.println(set); //[a, b, c]
```
3. toMap()方法:将Stream流中的元素收集到一个Map集合中。
```java
Map<String, Integer> map = Stream.of("a", "b", "c").collect(Collectors.toMap(s -> s, s -> s.length()));
System.out.println(map); //{a=1, b=1, c=1}
```
4. joining()方法:将Stream流中的元素连接成一个字符串。
```java
String str = Stream.of("a", "b", "c").collect(Collectors.joining());
System.out.println(str); //abc
```
5. averagingInt()方法:计算Stream流中元素的平均值。
```java
double avg = Stream.of(1, 2, 3, 4, 5).collect(Collectors.averagingInt(i -> i));
System.out.println(avg); //3.0
```
6. counting()方法:计算Stream流中元素的个数。
```java
long count = Stream.of("a", "b", "c").collect(Collectors.counting());
System.out.println(count); //3
```
7. summingInt()方法:计算Stream流中元素的总和。
```java
int sum = Stream.of(1, 2, 3, 4, 5).collect(Collectors.summingInt(i -> i));
System.out.println(sum); //15
```
8. maxBy()方法:找到Stream流中元素的最大值。
```java
Optional<Integer> max = Stream.of(1, 2, 3, 4, 5).collect(Collectors.maxBy(Integer::compare));
System.out.println(max.get()); //5
```
9. minBy()方法:找到Stream流中元素的最小值。
```java
Optional<Integer> min = Stream.of(1, 2, 3, 4, 5).collect(Collectors.minBy(Integer::compare));
System.out.println(min.get()); //1
```
10. groupingBy()方法:根据指定条件对Stream流中的元素进行分组。
```java
Map<Integer, List<String>> map = Stream.of("a", "b", "c", "aa", "bb", "cc").collect(Collectors.groupingBy(String::length));
System.out.println(map); //{1=[a, b, c], 2=[aa, bb, cc]}
```
11. partitioningBy()方法:根据指定条件对Stream流中的元素进行分区。
```java
Map<Boolean, List<String>> map = Stream.of("a", "b", "c", "aa", "bb", "cc").collect(Collectors.partitioningBy(s -> s.length() == 1));
System.out.println(map); //{false=[aa, bb, cc], true=[a, b, c]}
```
12. mapping()方法:对Stream流中的元素进行转换,并将转换后的元素收集到一个集合中。
```java
List<Integer> list = Stream.of("a", "bb", "ccc").collect(Collectors.mapping(String::length, Collectors.toList()));
System.out.println(list); //[1, 2, 3]
```
这些方法都是Collectors提供的常用方法,还有其他的方法可供使用。需要注意的是,使用Collectors时需要导入对应的包:import java.util.stream.Collectors;