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 : \[]

相关推荐
humbinal18 分钟前
同时支持 gui & cli 的 parquet 文件查看工具,高性能小清新!
hive·python·rust·spark·开源·github·parquet
90后的晨仔31 分钟前
Python 开发完全指南:从入门到工程化落地
python
灯澜忆梦34 分钟前
Go 语言 _JSON---序列化与反序列化
开发语言·golang·json
Mikowoo0071 小时前
批量汇总XML格式的发票信息
xml·python
胡耀超1 小时前
从一次批量爬取到生产同步:问题变了,建设边界也要跟着变
爬虫·python·系统架构·数据治理·数据同步·接口设计·爬虫工程
麻瓜老宋1 小时前
AI开发C语言应用按步走,表达式计算器calc的第四步,交互式 REPL 模式
c语言·开发语言·atomcode
旅僧1 小时前
王树森老师强化学习--同声传译版3
python·深度学习
梦想不只是梦与想1 小时前
python中精度处理:decimal
python·float·精度丢失·decimal·浮点运算
猫猫不是喵喵.1 小时前
双亲委派机制与类加载过程
java·开发语言
大模型码小白1 小时前
向量化引擎与 AI 排障:当 SIMD 遇到异常检测,存储诊断的范式转移
java·大数据·数据库·人工智能·python