21xrx.com
2024-12-22 22:24:06 Sunday
登录
文章检索 我的文章 写文章
Java Stream的GroupingBy功能:按多个字段对数据进行分组,同时对分组后的数据进行字段求和
2023-06-30 14:12:15 深夜i     --     --
Java Stream GroupingBy 多个字段 分组 字段求和

Java Stream是Java 8引入的新特性之一,它提供了一种流式处理数据的方式,以实现更高效、更简洁的数据操作。Java Stream中有一个非常实用的功能——GroupingBy,它可以按照指定的字段对数据进行分组,更加方便地进行数据分析和处理。

GroupingBy功能的使用非常简单,可使用如下的语法:

stream.collect(Collectors.groupingBy(Function classifier));

其中,Function classifier表示按照什么字段进行分组,T表示数据类型,K表示分组后的键值类型。例如,我们可以按照学生的姓名进行分组:

List studentList = Arrays.asList(

new Student("Tom", 18, "男"),

new Student("Lucy", 17, "女"),

new Student("John", 18, "男"),

new Student("Lily", 17, "女")

);

Map > groupBySexMap = studentList.stream()

.collect(Collectors.groupingBy(Student::getSex));

这段代码中,我们根据学生的性别进行分组,最终得到一个Map类型的对象,键为“男”或“女”,值为分组后的学生列表。

除了按照单一字段分组外,GroupingBy还支持按照多个字段进行分组。例如,我们可以按照学生的年龄和性别进行分组,并对分组后的数据进行求和:

Map > groupByAgeAndSexMap = studentList.stream()

.collect(Collectors.groupingBy(Student::getSex,

Collectors.groupingBy(Student::getAge, Collectors.summingInt(Student::getScore))));

这段代码中,我们根据学生的性别和年龄进行分组,最终得到一个嵌套的Map类型的对象,键为“男”或“女”,值为另一个Map对象,键为年龄,值为该分组下学生的总分。通过这种方式,我们可以更加方便快捷地进行复杂的数据分析和处理,提高工作效率。

总之,Java Stream的GroupingBy功能是一种非常实用的数据操作工具,它可以帮助我们更加高效地进行数据分组、汇总以及其他统计功能。在实际工作中,我们可以根据具体需求灵活运用这一功能,提高数据处理的效率和准确性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复