在service层对集合进行分组处理

问题是这样的:比方现在有一个集合List<User>,里面有N多条数据,User实体类如下:

 我们有这样一个需求:要看看每个部门下面都有哪些员工?

可能有的小伙伴会觉得:这问题狗都知道怎么解决!拉到Dao层一个Group by,不就完事了?

但是,有的时候,这个list集合,并不一定是你从数据库获取的,是你前面一系列操作存储在service层的临时集合,那要怎么办呢?让头发还茂密的小young来教你!

第一步,我们需要用一个Set来存储部门id,Set的特性是自动去重,这个你总该知道吧!然后就有了下列操作:

@Test
public void test(){
    //模拟集合中存储了一些数据
    User Anna = new User("1001", "anna", "1", 20);
    User Bill = new User("1002", "bill", "2", 21);
    User Clark = new User("1003", "clark", "1", 19);
    List<User> list = new ArrayList<>();
    list.add(Anna);
    list.add(Bill);
    list.add(Clark);
    //---------数据添加完毕
    //创建一个存储部门id的Set
    Set<String> set = new HashSet<>();
    for (User user : list) {
        set.add(user.getDeptId());
    }
    //根据deptId进行分组
    Map<String, List<User>> listMap = list.stream().collect(Collectors.groupingBy(t -> t.getDeptId()));
    for (String deptIdItem : set) {
        System.out.println("-------------");
        List<User> users = listMap.get(deptIdItem);
        for (User user : users) {
            System.out.println("部门编号为:" + user.getDeptId() + "的员工:" + user.getName() + "前来报到!");
        }
    }

}

运行结果如下:

 这样,就实现了我们的需求!当然,实际开发中,可能在分组之后会有很多处理,我们这里仅仅带领大家实现分组,后续操作,还是需要结合需求去搞的~

感谢阅读,如果你觉得文章对你有帮助,就分享给更多的猿吧!

需要的依赖

import org.junit.Test;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

young33的C站

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值