介绍下java中的Collectors类
时间: 2024-05-21 19:11:43 浏览: 48
Collectors类是Java 8中新增加的一个功能强大的工具类,它提供了很多有用的收集器方法,用于将流中的元素累积到一起,并执行各种操作,生成各种集合类型的数据结构,如List、Set、Map等。该类提供了诸如toList、toSet、toMap和joining等静态方法,这些方法可以方便地将流中的元素累积到集合中,并执行各种操作。使用Collectors类可以大大简化Java 8中的流式编程操作,使得代码更加简洁清晰。
相关问题
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中元素的数量。
java stream Collectors.joining
在Java Stream API中,`Collectors.joining()`是一个收集操作,用于将一系列元素转换成字符串,这些元素通常是字符串类型的,它们会被连接起来形成一个新的字符串。这个操作通常用于处理流中的元素序列,并通过指定的分隔符将它们合并。
例如:
```java
List<String> words = Arrays.asList("Hello", "World", "!"); // 假设我们有一个单词列表
String sentence = words.stream()
.collect(Collectors.joining(" ")); // 使用空格作为分隔符
// 结果:sentence现在是 "Hello World !"
```
在这个例子中,`joining(" ")`告诉Java使用空格作为默认分隔符,然后它会遍历流中的每个元素,生成并返回一个新字符串,其中所有元素由空格相连。
你可以自定义分隔符,比如:
```java
String sentenceWithCommas = words.stream()
.collect(Collectors.joining(",", "", "!")); // 使用逗号和感叹号作为起始和结束标记
```
这将得到 `", Hello, World, !"` 这样的结果。
阅读全文