java8之Stream操作

1.filter(筛选)

筛选list中名字叫lisi的:

@Override
    public void testFilter(String passWord) {
        Map<String,Object> columnMap = new HashMap<>();
        //写表中的列名
        columnMap.put("pass_word",passWord);
        List<User> users = testFilter(userMapper.selectByMap(columnMap));
        log.info(String.valueOf(users));
    }

    private  List<User> testFilter(List<User> user){
        //筛选名字叫lisi,返回list
        return user.stream().filter(u ->"lisi".equals(u.getUserName())).collect(Collectors.toList());
    }
2.map (转换)

在名字前面加上部分信息,只获取名字输出:

 @Override
    public void testFilter(String passWord) {
        Map<String,Object> columnMap = new HashMap<>();
        //写表中的列名
        columnMap.put("pass_word",passWord);
        
        //step2:
        List<String> uName = testMap(userMapper.selectByMap(columnMap));
        uName.forEach(u -> log.info(u));
    }
    /**
     * 集合转换
     * @param users
     * @return
     */
    private List<String> testMap(List<User> users) {
        //在名字前面加上部分信息,只获取名字输出
        return users.stream().map(u ->"Name:"+u.getUserName()).collect(Collectors.toList());
    }

在这里插入图片描述

3.distinct (去重)

实际有两个lisi

@Override
    public void testFilter(String passWord) {
        Map<String,Object> columnMap = new HashMap<>();
        //写表中的列名
        columnMap.put("pass_word",passWord);

        //step3:此testMap方法调用的上面2。
        List<String> uName = testMap(userMapper.selectByMap(columnMap));
        uName.stream().distinct().forEach(u -> log.info(u));
    }

在这里插入图片描述

4.sorted (排序)
@Override
    public void testFilter(String passWord) {
        Map<String,Object> columnMap = new HashMap<>();
        //写表中的列名
        columnMap.put("pass_word",passWord);

        //step4:排序
        List<String> uName = testSort(userMapper.selectByMap(columnMap));
        uName.stream().sorted().forEach(u -> log.info(u));
    }
    /**
     * 排序
     * @param users
     * @return
     */
    private List<String> testSort(List<User> users) {
        //获取realName
        return users.stream().map(u ->u.getRealName()).collect(Collectors.toList());
    }

在这里插入图片描述

5.limit(限制返回个数)

集合limit,返回前几个元素:

@Override
    public void testFilter(String passWord) {
        Map<String,Object> columnMap = new HashMap<>();
        //写表中的列名
        columnMap.put("pass_word",passWord);

        //step5:调用上面4方法,返回前两条
        List<String> uName = testSort(userMapper.selectByMap(columnMap));
        uName.stream().limit(2).forEach(u -> log.info(u));
    }
6.skip (删除元素)

集合skip,删除前n个元素:

@Override
    public void testFilter(String passWord) {
        Map<String,Object> columnMap = new HashMap<>();
        //写表中的列名
        columnMap.put("pass_word",passWord);

       //step6:删除前2个元素
        List<String> uName = testSort(userMapper.selectByMap(columnMap));
        uName.stream().skip(2).forEach(u -> log.info(u));
    }

在这里插入图片描述

7.reduce (聚合)

集合reduce,将集合中每个元素聚合成一条数据:

@Override
    public void testFilter(String passWord) {
        Map<String,Object> columnMap = new HashMap<>();
        //写表中的列名
        columnMap.put("pass_word",passWord);

       //step7:聚合,调用上面4方法
        List<String> uName = testSort(userMapper.selectByMap(columnMap));
        String reduceStr = uName.stream().reduce("REALNAME:",(a,b) -> a+b);
        log.info(reduceStr);
    }
8.min (求最小值)

求集合中元素的最小值:

@Override
    public void testFilter(String passWord) {
        Map<String,Object> columnMap = new HashMap<>();
        //写表中的列名
        columnMap.put("pass_word",passWord);

       //step8:求集合中元素的最小值
        List<User> uName = userMapper.selectByMap(columnMap);
        User user = uName.stream().min(Comparator.comparingInt(User::getId)).get();
        log.info(user.toString());
    }
max最大值同理。
9.anyMatch/allMatch/noneMatch (匹配)
@Override
    public void testFilter(String passWord) {
        Map<String,Object> columnMap = new HashMap<>();
        //写表中的列名
        columnMap.put("pass_word",passWord);

       //step9:匹配
        List<User> uName = userMapper.selectByMap(columnMap);
		
        Boolean anyMatch = uName.stream().anyMatch(u ->"lisi".equals(u.getUserName()));
        //任意一个元素符合传入的 predicate,返回 true
        if (anyMatch) {
            log.info("lisi存在!!!");
        }

        Boolean allMatch = uName.stream().allMatch(u -> u.getId()>=1);
        //全部元素符合传入的 predicate,返回 true
        if (allMatch) {
            log.info("所有Id都大于等于1");
        }

        Boolean noneMatch = uName.stream().noneMatch(u -> "密码".equals(u.getPassWord()));
        //没有一个元素符合传入的 predicate,返回 true
        if (noneMatch) {
            log.info("没有passWord='密码'");
        }
    }

总结:
anyMatch:Stream 中任意一个元素符合传入的 predicate,返回 true;
allMatch:Stream 中全部元素符合传入的 predicate,返回 true;
noneMatch:Stream 中没有一个元素符合传入的 predicate,返回 true。

有关Stream的其他操作参考下面:

Java8之Stream
Java8之Stream(list转map)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

菜鸟驿站ㅤ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值