【由浅入深 - Java笔记】玩转List:List过滤和筛选

在这里插入图片描述


List筛选/过滤,Stream和Filter

花时间精力去凿许多浅井还不如花相当多的时间和精力去凿一口深井。
                                 ——罗曼·罗兰

  在Java的编程中,如果要问,出现频率最高的Collection工具类是什么?毫无疑问,答案是List。本文分享几种在Java中,按照对象的属性,对List里面的元素进行过滤的常见方法。

1. 使用list的Stream进行筛选

/**
     * Java8以上,使用list的Stream进行筛选
     * @param userBeanList 用户列表
     * @return 筛选后满足条件的用户列表
     */
    public List<UserBean> filterByStream(List<UserBean> userBeanList) {
        return userBeanList.stream().filter(userBean -> Objects.nonNull(userBean))
                .filter(userBean -> userBean.getAge() >= 18)
                .collect(Collectors.toList());
    }

2. 增强for循环遍历元素,进行筛选

/**
     * for循环遍历元素,进行筛选
     * @param userBeanList 用户列表
     * @return 筛选后满足条件的用户列表
     */
    public List<UserBean> filterByFor(List<UserBean> userBeanList) {
        List<UserBean> newUserBeanList = new ArrayList<>();
        for (UserBean userBean : userBeanList) {
            if (userBean.getAge() >= 18) {
                newUserBeanList.add(userBean);
            }
        }
        return newUserBeanList;
    }

3. 使用list.foreach遍历

/**
     * 使用list.foreach遍历
     * @param userBeanList 用户列表
     * @return 筛选后满足条件的用户列表
     */
    public List<UserBean> filterByForEach(List<UserBean> userBeanList){
        List<UserBean> newUserBeanList = new ArrayList<>();
        userBeanList.forEach(userBean -> {
            if (userBean.getAge() >= 18) {
                newUserBeanList.add(userBean);
            }
        });
        return newUserBeanList;
    }

4. 使用iterator遍历

/**
     * 使用iterator遍历
     * @param userBeanList 用户列表
     * @return 筛选后满足条件的用户列表
     */
    public List<UserBean> filterByIterator(List<UserBean> userBeanList) {
        List<UserBean> newUserBeanList = new ArrayList<>();
        Iterator<UserBean> iterator = userBeanList.iterator();
        while (iterator.hasNext()) {
            UserBean userBean = iterator.next();
            if (userBean.getAge() >= 18) {
                newUserBeanList.add(userBean);
            }
        }
        return newUserBeanList;
    }

5. 视频笔记

  哈喽! 我是2022年06月毕业初入职场的皮卡侯! 通过笔记的方式,将工作中经常遇到的一些技术点进行总结,欢迎小伙伴们批评指正哈!!! 随着工作经验的积累,内容将会持续更新哦…

  另外,本篇笔记也在小破站通过视频形式分享,欢迎访问 小破站视频笔记