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());
    }

java8之Stream操作_最小值

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));
    }

java8之Stream操作_ide_02

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());
    }

java8之Stream操作_stream_03

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));
    }

java8之Stream操作_最小值_04

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)