Collectors收集结果为Integer类型的方法
时间: 2025-01-01 09:35:59 浏览: 4
在Java Stream API中,`Collectors`提供了一系列静态方法,用于将Stream转换成其他形式的集合或数据结构。如果你想把收集的结果限定为整数类型,可以结合使用不同的收集器。这里有一些常见的用法:
1. **计数**(counting):计算流中元素的数量,通常配合`Collectors.counting()`,如:
```java
int count = numbers.stream().collect(Collectors.counting());
```
2. **求和**(summingInt):对于整数型流,可以用`Collectors.summingInt()`来求和,比如计算数值数组的总和:
```java
long sum = numbers.stream().mapToInt(Integer::intValue).collect(Collectors.summingInt());
```
3. **平均值**(averagingInt):同样,有`Collectors.averagingInt()`可以计算整数类型的平均值,前提是有足够的元素可供计算:
```java
double average = numbers.stream().mapToInt(Integer::intValue)
.collect(Collectors.averagingInt(Integer::doubleValue));
```
4. **最大值/最小值**(maxBy/minBy):通过`Collectors.maxBy()`或`minBy()`获取整数的最大值或最小值,需要传入一个Comparator:
```java
Optional<Integer> max = numbers.stream().mapToInt(Integer::intValue)
.collect(Collectors.maxBy(Comparator.naturalOrder()));
```
5. **收集到Set/Array**:如果需要收集唯一的整数,可以使用`Collectors.toSet()`或`toArray(IntFunction)`,前者收集唯一值,后者自定义长度的数组:
```java
Set<Integer> uniqueNumbers = numbers.stream().collect(Collectors.toSet());
int[] integersArray = numbers.stream().mapToInt(Integer::intValue)
.toArray(Integer[]::new);
```
每个收集器后面都可以跟一个函数来处理原始元素,如上面的`mapToInt()`。
阅读全文