java 使用lambda对list分组求和
时间: 2023-09-16 20:07:33 浏览: 170
JAVA8 stream中三个参数的reduce方法对List进行分组统计操作
5星 · 资源好评率100%
可以使用Java 8中的Stream API和lambda表达式来对List进行分组求和。假设我们有一个List<Integer>,需要按照其中元素的奇偶性进行分组求和,可以使用如下代码:
```java
import java.util.*;
import java.util.stream.*;
public class Main {
public static void main(String[] args) {
List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Map<Boolean, Integer> result = nums.stream()
.collect(Collectors.partitioningBy(num -> num % 2 == 0,
Collectors.summingInt(Integer::intValue)));
System.out.println(result); // 输出 {false=25, true=30},即奇数之和为25,偶数之和为30
}
}
```
在上述代码中,我们使用`stream()`方法将`nums`列表转换为Stream对象,然后使用`partitioningBy`方法将Stream按照元素的奇偶性进行分组,返回一个Map<Boolean, Integer>,其中Boolean表示分组的键(true表示偶数,false表示奇数),Integer表示分组的值(即每个分组中元素的和)。最终使用Map的toString()方法将结果输出到控制台上。
阅读全文