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

相关推荐
yuzhuanhei1 分钟前
C++进阶(上)
开发语言·c++
@我漫长的孤独流浪5 分钟前
Python精选480题带解析
python
程序员老乔5 分钟前
Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(三):虚拟线程2.0,电商秒杀场景下的并发革命
java·开发语言·spring boot
weixin_404157686 分钟前
Java高级面试与工程实践问题集(四)
java·开发语言·面试
xyq202410 分钟前
CSS 链接(Link)详解
开发语言
cyforkk13 分钟前
Spring AOP 核心揭秘:ProceedingJoinPoint 与反射机制详解
java·python·spring
brucelee18618 分钟前
Install OpenLM AI module management on Windows
人工智能·windows
2301_8101609518 分钟前
使用Flask快速搭建轻量级Web应用
jvm·数据库·python
无限进步_18 分钟前
【C++】单词反转算法详解:原地操作与边界处理
java·开发语言·c++·git·算法·github·visual studio
senijusene21 分钟前
通信概念,51UART的使用,以及MODBUS的简单应用
c语言·开发语言·单片机·51单片机