Java中用Stream分组并求各组数量

这篇具有很好参考价值的文章主要介绍了Java中用Stream分组并求各组数量。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

比如给了我一个班级的所有人的姓氏和姓名对象集合,根据这个集合求出各姓氏有多少人。直接上代码。

User的实体类对象为

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String firstName; // 姓氏
    private String name; // 姓名
}
List<User> userList = new ArrayList<>();
userList.add(new User("张","张三"));
userList.add(new User("张","张四"));
userList.add(new User("张","张五"));
userList.add(new User("李","李一"));
userList.add(new User("李","李二"));
Map<String, Integer> groupCount = userList.stream()
        .collect(Collectors.toMap(User::getFirstName, el -> 1, Integer::sum));
System.out.println(groupCount);

输出的结果为:

 java stream 分组计数,java,intellij-idea,idea

即姓张的有3个,姓李的有两个。

详解: 将该集合的stream流用Collectors对象转成Map,用User对象的firstName作为Key,默认键值为1,在处理键冲突的函数中,将上一次的值与默认值1相加。比如处理第一个姓张的人的时候,默认值为1,处理第二个也是姓张的人的时候默认值也是1,将1和1相加得2,(即有两个姓张的人了),处理第三个姓张的人的时候,将上次的结果2与第三个姓张返回的默认值1相加,得3,以此类推...得到处理结果。文章来源地址https://www.toymoban.com/news/detail-518316.html

到了这里,关于Java中用Stream分组并求各组数量的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java8 Stream 之groupingBy 分组讲解

    本文主要讲解:Java 8 Stream之Collectors.groupingBy()分组示例 Collectors.groupingBy() 分组之常见用法 功能代码: /**      * 使用java8 stream groupingBy操作,按城市分组list      */     public void groupingByCity() {         MapString, ListEmployee map = employees.stream().collect(Collectors.groupingBy(Employee::getCi

    2024年02月13日
    浏览(35)
  • Java Stream 实用特性:排序、分组和 teeing

    基本数据类型排序 基本数据类型就是字符串、整型、浮点型这些,也就是要排序的列表中的元素都是这些基本类型的,比如 ListInteger 的。 下面就用一个整型列表举例说明。 正序排序 正序排序,也可以叫做按照自然顺序排序,对于整型来说就是从小到大的。 输出结果是 [0

    2024年02月03日
    浏览(40)
  • Java中用Stream流对List对象集合转Map时key值重复的操作

    看完你还不懂,你直接喷·· 定义: 1.List是一个装Dto对象的集合 2.Dto里面有ID属性,name属性等等 3.Dto里面的ID会重复  现在要把List转成以ID为key值的map,明显key不能重复啊,所以应该怎么操作呢? (需要你有java8Stream流的基本概念,map的基本概念)   操作1:重复key,选择保留

    2024年01月18日
    浏览(37)
  • Java Stream 处理分组后取每组最大&Stream流之list转map、分组取每组第一条&Java 8 Collectors:reducing 示例(List分组取最值)

    有一个需求功能:先按照某一字段分组,再按照另外字段获取最大的那个 先根据appId分组,然后根据versionSort取最大. JDK1.8推出的stream流能极大的简化对集合的操作,让代码更美观,老规矩,直接上代码。 取list中对象的某个属性作为唯一key,对象作为value形成一个map集合,能

    2024年02月16日
    浏览(49)
  • Java Stream流实现多字段分组groupingBy操作

    近期的项目里,遇到一个需求:对于含有多个元素的List,按照其中的某几个属性进行分组,比如Report::getPersonID、Report::getSchoolYear、Report::getDataType等字段。下面就让我们讨论一下如何比较优雅的按多字段进行分组groupingBy。 利用单个字段进行分组 如上面的Report类,如果对于其

    2024年02月07日
    浏览(50)
  • Java8的stream之groupingBy()分组排序

    groupingBy()是Stream API中最强大的收集器Collector之一,提供与SQL的GROUP BY子句类似的功能。 需要指定一个属性才能使用,通过该属性执行分组。我们通过提供功能接口的实现来实现这一点 - 通常通过传递lambda表达式。 TreeMap默认按照key升序排序,collectPlan.descendingMap()可以进行降序排

    2024年02月12日
    浏览(32)
  • Java 8 Stream实用篇,玩转集合的筛选、归约、分组、聚合

    Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选、排序、聚合等。 Stream可以由数组或集合创建,对流的操作分为两种: 中间操作 ,每次返回一个新的流,可以有多个。 终端操作 ,每个流只能进行一次终端操作,终端操

    2024年01月20日
    浏览(60)
  • Java解决stream流Collectors.groupingBy 分组统计可能报空指针异常

    在使用stream流的Collectors.groupingBy做分组统计时(示例代码如下) 如果统计的字段userName有null值则会报如下错误 解决方法为在统计之前增加一个filter方法将null值事先过滤掉。代码如下:

    2024年02月04日
    浏览(34)
  • Java8 Stream分组groupBy后,取单一字段值、取列表第一个值方式

    java8 Stream中groupBy的拓展用法。 取单一字段值、取列表第一个值方式

    2024年02月14日
    浏览(28)
  • Java8使用stream流给List<Map<String,Object>>分组(多字段key)

    Java8使用 stream流 给ListMapString,Object根据字段key 分组 一、项目场景: 从已得到的List集合中,根据某一元素(这里指map的key)进行分组,筛选出需要的数据。 如果是SQL的话则使用 group by 直接实现,代码的方式则如下: 使用到stream流的 Collectors.groupingBy() 方法。 二、代码实现 1、首

    2024年02月02日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包