list按照对象的某个属性进行分组

本文介绍了一个Personnel类的实现,包括姓名、年龄和爱好的属性,并展示了如何使用JUnit测试代码创建实例,通过年龄分组统计人员信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先创建一个类

/**
 * @author qiuhongyu
 * @date 2022/3/3 15:01
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Personnel implements Serializable {

    /**
     * 姓名
     */
    private String name;

    /**
     * 年龄
     */
    private Integer age;

    /**
     * 爱好
     */
    private String Hobby;

}

编写测试代码

    @Test
    public void getPersonInfo() {
        Personnel personnel1 = new Personnel();
        personnel1.setName("隔壁老王");
        personnel1.setAge(50);
        personnel1.setHobby("钓鱼");

        Personnel personnel2 = new Personnel();
        personnel2.setName("王阿姨");
        personnel2.setAge(50);
        personnel2.setHobby("当人间月老");

        Personnel personnel3 = new Personnel();
        personnel3.setName("赵六");
        personnel3.setAge(28);
        personnel3.setHobby("打篮球");


        Personnel personnel4 = new Personnel();
        personnel4.setName("李四");
        personnel4.setAge(28);
        personnel4.setHobby("写代码");

        Personnel personnel5 = new Personnel();
        personnel5.setName("小红");
        personnel5.setAge(12);
        personnel5.setHobby("学习");

        List<Personnel> personnelList = new ArrayList<>();
        personnelList.add(personnel1);
        personnelList.add(personnel2);
        personnelList.add(personnel3);
        personnelList.add(personnel4);
        personnelList.add(personnel5);

        //以年龄进行分组
        Map<Integer, List<Personnel>> peresonGroupAgeMap
                = personnelList.parallelStream().collect(Collectors.groupingBy(Personnel::getAge));
        System.out.println(peresonGroupAgeMap.toString());

    }

运行结果如图所示:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值