list().stream().collect()

list().stream().collect(Collectors.groupingby(Entity::getFild))的用法

@Test
    void contextLoads1() {
        User user0 = new User();
        user0.setId(0);
        user0.setNickname("name0");
        user0.setUsername("username0");
        user0.setCategory("学生");

        User user1 = new User();
        user1.setId(1);
        user1.setNickname("name1");
        user1.setUsername("username1");
        user1.setCategory("老师");

        User user2 = new User();
        user2.setId(2);
        user2.setNickname("name2");
        user2.setUsername("username2");
        user2.setCategory("教学主任");

        List<User> userList = new ArrayList<>();
        userList.add(user0);
        userList.add(user1);
        userList.add(user2);

    //跟据某个属性分组
        Map<String, List<User>> userMap = userList.stream().collect(Collectors.groupingBy(User::getCategory));
        System.out.println(userMap);     
        // 查询结果 
        // {学生=[User{id=0, nickname=name0, username=username0}],
        // 老师=[User{id=1, nickname=name1,username=username1}],
        // 教学主任=[User{id=2, nickname=name2,username=username2}]}
    
       //根据某个属性分组,汇总某个属性    
       Map<String, Integer> collect2 = userList.stream().collect(Collectors.groupingBy(User::getCategory,Collectors.summingInt(User::getId)));    
       System.out.println(collect2);    
       // 查询结果    // {学生=0, 老师=1, 教学主任=2}
    

       //根据某个属性添加条件过滤数据
    userList = userList.stream().filter(u -> !u.getNickname().equals("name0")).collect(Collectors.toList());
    System.out.println(userList);    
       // 查询结果    
       // [User{id=1, nickname=name1,username=username1},    
       // User{id=2, nickname=name2, username=username2}]
    //判断一组对象里面有没有这个属性值
    boolean add = userList.stream().anyMatch(m -> "name2".equals(m.getNickname()));
    System.out.println(add);
    
        //取出一组对象的某个属性组成一个新集合    
        List<String> Username=userList.stream().map(User::getUsername).collect(Collectors.toList());
    System.out.println(Username);    
        // 查询结果      // [username0, username1, username2]

 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值