Java8 集合分组求和
简介
在Java开发中,我们经常会遇到需要对集合中的数据进行分组和求和的场景。在Java8中,引入了一个非常强大的Stream API,使得对集合进行分组求和变得更加简洁和高效。
本文将介绍如何使用Java8的Stream API来实现集合分组求和的功能,并提供代码示例。
流程图
下图是实现集合分组求和的流程图:
flowchart TD
A[创建集合] --> B[创建Stream]
B --> C[分组]
C --> D[求和]
D --> E[输出结果]
代码示例
以下是一个示例代码,演示如何使用Java8的Stream API来实现集合分组求和的功能。
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class CollectionGroupBySum {
public static void main(String[] args) {
// 创建一个包含整数的集合
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// 使用Stream API对集合进行分组求和
Map<String, Integer> sumByGroup = numbers.stream()
.collect(Collectors.groupingBy(CollectionGroupBySum::groupBy, Collectors.summingInt(Integer::intValue)));
// 输出结果
System.out.println(sumByGroup);
}
private static String groupBy(Integer number) {
// 根据数字的奇偶性进行分组
if (number % 2 == 0) {
return "偶数";
} else {
return "奇数";
}
}
}
在上述代码示例中,我们首先创建了一个包含整数的集合numbers
。然后,使用stream()
方法将集合转换为一个Stream,并通过groupingBy
方法对Stream进行分组操作。groupingBy
方法接受一个分组函数groupBy
,用于根据数字的奇偶性进行分组。分组函数的返回值作为分组的依据。最后,我们使用summingInt
方法计算每个分组中的元素之和,并将结果以Map
的形式返回。
代码运行结果如下所示:
{奇数=25, 偶数=30}
结果表明,原始集合中的奇数之和为25,偶数之和为30。
总结
通过使用Java8的Stream API,我们可以方便地对集合进行分组求和的操作。只需要使用groupingBy
方法对Stream进行分组,再使用summingInt
方法对每个分组进行求和。这种方式不仅简洁高效,还可以极大地提高代码的可读性。
希望本文能够帮助读者更好地理解Java8的集合分组求和功能,并在实际开发中得到应用。