ListUtils中筛选数据方式select

ListUtils中筛选数据方式select

用法说明

java 复制代码
    /**
     * Selects all elements from input collection which match the given
     * predicate into an output list.
     * 从给出的集合中筛选符合对应断言的数据,最终汇总一个新的集合。
     * <p>
     * A <code>null</code> predicate matches no elements.
     *
     * @param <E> the element type
     * @param inputCollection  the collection to get the input from, may not be null 集合不为空
     * @param predicate  the predicate to use, may be null 
     * @return the elements matching the predicate (new list)
     * @throws NullPointerException if the input list is null 如果集合为空,空指针异常
     *
     * @since 4.0
     * @see CollectionUtils#select(Iterable, Predicate)
     */
    public static <E> List<E> select(final Collection<? extends E> inputCollection,
            final Predicate<? super E> predicate) {
        return CollectionUtils.select(inputCollection, predicate, new ArrayList<E>(inputCollection.size()));
    }

实践用法

造数据方法

java 复制代码
    public List<User> buildData() {
        List<User> result = Lists.newArrayList();
        for (int i = 0; i < 10; i++) {
            if (i % 2 == 0) {
                result.add(User.builder().userName("小" + i).age(i * 2).loginTime(DateUtil.parse("2023-08-09", com.alibaba.excel.util.DateUtils.DATE_FORMAT_10))
                        .account(new BigDecimal("1"))
                        .build());
            } else {
                result.add(User.builder().userName("小" + i).age(i * 3).loginTime(DateUtil.parse("2023-08-10", com.alibaba.excel.util.DateUtils.DATE_FORMAT_10))
                        .account(new BigDecimal("2"))
                        .build());
            }
        }
        return result;
    }

集合为空处理

java 复制代码
   List<User> buildData = null;
   if (CollectionUtils.isNotEmpty(buildData)){
       List<User> result = ListUtils.select(buildData
               , item -> item.getAccount().compareTo(new BigDecimal("1")) == 0);
       log.info("result : [{}]", result);
   }

集合不为空处理

java 复制代码
 List<User> buildData = buildData();
 if (CollectionUtils.isNotEmpty(buildData)){
        List<User> result = ListUtils.select(buildData
                , item -> item.getAccount().compareTo(new BigDecimal("1")) == 0);
        log.info("result : [{}]", result);
    }

09:15:04.509 [main] INFO com.geekmice.springbootselfexercise.NoDaoTest - result : [[NoDaoTest.User(userName=小0, age=0, loginTime=Wed Aug 09 00:00:00 CST 2023, account=1), NoDaoTest.User(userName=小2, age=4, loginTime=Wed Aug 09 00:00:00 CST 2023, account=1), NoDaoTest.User(userName=小4, age=8, loginTime=Wed Aug 09 00:00:00 CST 2023, account=1), NoDaoTest.User(userName=小6, age=12, loginTime=Wed Aug 09 00:00:00 CST 2023, account=1), NoDaoTest.User(userName=小8, age=16, loginTime=Wed Aug 09 00:00:00 CST 2023, account=1)]]
断言为空时,返回空集合

java 复制代码
List<User> buildData = buildData();
        if (CollectionUtils.isNotEmpty(buildData)){
            List<User> result = ListUtils.select(buildData
                    , null);
            log.info("result : [{}]", result);
        }

09:13:47.765 [main] INFO com.geekmice.springbootselfexercise.NoDaoTest - result : [[]]

相关推荐
猫头虎16 小时前
PyCharm 2025.3 最新变化:值得更新吗?
ide·爬虫·python·pycharm·beautifulsoup·ai编程·pip
ekprada16 小时前
DAY45 TensorBoard深度学习可视化工具
人工智能·python
轻竹办公PPT16 小时前
PPT生成效率提升的方法:AI生成PPT实战说明
人工智能·python·powerpoint
YJlio16 小时前
Python 一键拆分 PDF:按“目录/章节”建文件夹 + 每页单独导出(支持书签识别&正文识别)
开发语言·python·pdf
IT方大同16 小时前
C语言进制转化
c语言·开发语言
Amelia11111116 小时前
day30
python
野生风长16 小时前
从零开始的C语言:文件操作与数据存储(上)(文件的分类,文件的打开和关闭)
c语言·开发语言
我是哈哈hh16 小时前
【Python数据分析】数据可视化(全)
开发语言·python·信息可视化·数据挖掘·数据分析
魔镜前的帅比16 小时前
LangGraph(流程化控制)
python·langchain
yaoh.wang16 小时前
力扣(LeetCode) 69: x 的平方根 - 解法思路
python·算法·leetcode·面试·职场和发展·牛顿法·二分法