Java - Stream Filter 多条件筛选过滤

news/2024/7/5 2:36:31

Java Stream流中Filter用于通过设置的条件过滤出元素 ,示例如下:

List strings = Arrays.asList(“abc”, “”, “bc”, “efg”, “abcd”,"", “jkl”);

List filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());

如果需要进行多条件过滤

我们可以对这些参数进行处理,我们只是需要做一下判断,即:

让所有参数默认为 false,然后对传进来的值进行取值判断,若满足该条件为true,多个条件进行多次判断

判断完成之后 会拿到所有的boolean值 通过 && 拼接返回,即 有一个为false,即返回值为false

通过该方法会对一个对象进行多条件过滤

public static List<BidListVo> checkOperationv1(List<BidListVo> list, BidProgressEnum progressEnum){
        Integer progress = Integer.valueOf(progressEnum.getCode());
        String nodeId = progressEnum.getNode();
        List<BidListVo> collect = list.stream().filter(bidListVo -> filterProgress(bidListVo,progress)  )
                .collect(Collectors.toList());
     
        return collect;
    }

    private static boolean filterProgress(BidListVo bidListVo, Integer progress) {
        //副流程未开始 只判断主流程
        if(StringUtils.isEmpty(bidListVo.getReviewProgress())){
            return Integer.valueOf(bidListVo.getProgress()) >= progress ? true: false;
        }else if(Integer.valueOf(bidListVo.getProgress()) >= progress ||
                Integer.valueOf(bidListVo.getReviewProgress()) >= progress){
            // 主流程 独立流程 任意一个大于当前筛选进度就好
            return true;
        }
        return false;
    }

示例 

public class MultiFilterTest {
    public static void main(String[] args) {
        List<User> userList = getUserList();

        // 筛选 age > 18 && address = "上海" 的user
        List<User> filterList = userList.stream().filter(user -> filterAgeAndAddress(user,18,"上海")).collect(Collectors.toList());

        filterList.forEach(System.out::println);
    }

    // 筛选 age > 18 && address = "上海" 的user
    private static boolean filterAgeAndAddress(User user,Integer age,String address){

        if(user.getAge() > 18 && address.equals(user.getAddress())){
            return true;
        }
        return false;
    }

    private static List<User> getUserList() {
        List<User> userList = new ArrayList<>();

        userList.add(new User(1,"张三",18,"上海"));
        userList.add(new User(2,"王五",16,"上海"));
        userList.add(new User(3,"李四",20,"上海"));
        userList.add(new User(4,"张雷",22,"北京"));
        userList.add(new User(5,"张超",15,"深圳"));
        userList.add(new User(6,"李雷",24,"北京"));
        userList.add(new User(7,"王爷",21,"上海"));
        userList.add(new User(8,"张三丰",18,"广州"));
        userList.add(new User(9,"赵六",16,"广州"));
        userList.add(new User(10,"赵无极",26,"深圳"));

        return userList;
    }
}

输出如下:


http://lihuaxi.xjx100.cn/news/1840451.html

相关文章

关于fine-tune “微调”

大模型的 Fine-tune 我们对技术的理解&#xff0c;要比技术本身更加重要。 正如我在《大模型时代的应用创新范式》一文中所说&#xff0c;大模型会成为AI时代的一项基础设施。 作为像水、电一样的基础设施&#xff0c;预训练大模型这样的艰巨任务&#xff0c;只会有少数技术…

HCIA-H12-811题目解析(2)

1、【单选题】 在以太网这种多点访问网络上PPPOE服务器可以通过一个以太网端口与很多PPPOE客户端建立起PPP连接&#xff0c;因此服务器必须为每个PPP会话建立唯一的会话标识符以区分不同的连接PPPOE会使用什么参数建立会话标识符? 2、【单选题】PPP协议定义的是OSI参考模型中…

国标GB28181安防视频平台EasyGBS现场突发播放中断是什么原因?

视频流媒体安防监控国标GB28181平台EasyGBS视频能力丰富&#xff0c;部署灵活&#xff0c;既能作为业务平台使用&#xff0c;也能作为安防监控视频能力层被业务管理平台调用。国标GB28181视频EasyGBS平台可提供流媒体接入、处理、转发等服务&#xff0c;支持内网、公网的安防视…

CountDownLatch和CyclicBarrier源码详解

其他系列文章导航 Java基础合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章目录文章目录前言 前言 我现在有个场景:现在我有50个任务&#xff0c;这50个任务在完成之后&#xff0c;才能执行下一个函数&#xff0c;要是你&#xff0c;你怎么设计? 可…

计算机组成原理-虚拟存储器

文章目录 虚拟存储系统页式虚拟存储器存储器的层次化结构段式虚拟存储器段页式虚拟存储器 虚拟存储系统 将辅存中程序部分调入内存&#xff0c;程序其他待分待需要再调入内存 页式虚拟存储器 将辅存中的程序分页&#xff0c;将当前用得到的程序的页调入到主存中。 外存块号…

Django整合回顾

web应用 什么是web&#xff1a;通过web访问web应用程序&#xff0c;很方便&#xff0c;用户只需要一个浏览器即可。是典型的浏览器/服务器端架构的产物 cs架构与bs架构 应用程序有C/S B/S两种模式&#xff1a;b/s 本质上还是c/s mysql属于c/s架构&#xff0c;只是我们的服务…

Adversarial Attack and Defense on Graph Data: A Survey(2022 IEEE Trans)

Adversarial Attack and Defense on Graph Data: A Survey----《图数据的对抗性攻击和防御&#xff1a;综述》 图对抗攻击论文数据库&#xff1a; https://github.com/safe-graph/graph-adversarial-learning-literature 摘要 深度神经网络&#xff08;DNN&#xff09;已广泛应…

【论文阅读】TACAN:控制器局域网中通过隐蔽通道的发送器认证

文章目录 摘要一、引言二、相关工作三、系统和对手模型3.1 系统模型对手模型 四、TACAN4.1 TACAN 架构4.2 发送方认证协议4.3 基于IAT的隐蔽通道4.4 基于偏移的隐蔽通道&#xff08;本节公式格式暂未整理&#xff09;4.5 基于LSB的隐蔽通道 摘要 如今&#xff0c;汽车系统与现…