介绍下java中的Collectors类
时间: 2024-05-21 21:11:43 浏览: 36
Collectors类是Java 8中新增加的一个功能强大的工具类,它提供了很多有用的收集器方法,用于将流中的元素累积到一起,并执行各种操作,生成各种集合类型的数据结构,如List、Set、Map等。该类提供了诸如toList、toSet、toMap和joining等静态方法,这些方法可以方便地将流中的元素累积到集合中,并执行各种操作。使用Collectors类可以大大简化Java 8中的流式编程操作,使得代码更加简洁清晰。
相关问题
Java中Map如何使用Collectors
在Java中,可以使用Collectors来对Map进行操作。例如,可以使用Collectors.toMap()将一个列表转换为Map,也可以使用Collectors.groupingBy()按照指定的键对列表进行分组操作。
下面是使用Collectors.toMap()将列表转换为Map的示例代码:
```
List<String> list = Arrays.asList("a", "b", "c", "d");
Map<String, Integer> map = list.stream().collect(Collectors.toMap(Function.identity(), String::length));
System.out.println(map);
```
输出结果为:{a=1, b=1, c=1, d=1}
在上面的示例代码中,使用了Function.identity()作为Map的键,并使用了String::length作为Map的值。
另外,使用Collectors.groupingBy()对列表进行分组操作也非常方便。下面是一个示例代码:
```
List<String> list = Arrays.asList("apple", "banana", "cat", "dog");
Map<Integer, List<String>> map = list.stream().collect(Collectors.groupingBy(String::length));
System.out.println(map);
```
输出结果为:{3=[cat, dog], 5=[apple], 6=[banana]}
在这个示例代码中,按照字符串的长度作为键进行分组操作,并将具有相同长度的字符串放入同一个列表中。
java Collectors
Java 8引入了一个新的类Collectors,它提供了很多有用的归约操作,可以将流转换为集合、聚合元素、计算平均值等等。下面是两个Collectors的例子:
1. collectingAndThen()方法:该方法是在归纳动作结束之后,对归纳的结果进行再处理。例如,我们可以使用该方法将流转换为List,然后获取List的大小。
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class CollectorsTest {
public static void collectingAndThenTest(List<String> list){
int length = list.stream().collect(Collectors.collectingAndThen(Collectors.toList(),e -> e.size()));
System.out.println(length);
}
public static void main(String[] args) {
List<String> list = Arrays.asList("123","456","789","1101","212121121","asdaa","3e3e3e","2321eew");
collectingAndThenTest(list);
}
}
```
输出结果为:8,即List的大小。
2. counting()方法:该方法用于计数。例如,我们可以使用该方法计算List中元素的数量。
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class CollectorsTest {
public static void countingTest(List<String> list){
long size = list.stream().collect(Collectors.counting());
System.out.println(size);
}
public static void main(String[] args) {
List<String> list = Arrays.asList("123","456","789","1101","212121121","asdaa","3e3e3e","2321eew");
countingTest(list);
}
}
```
输出结果为:8,即List中元素的数量。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)