Java中Stream Filter多条件筛选过滤代码举例

 更新时间:2023年12月15日 09:43:17   作者:MinggeQingchun  
这篇文章主要给大家介绍了关于Java中Stream Filter多条件筛选过滤的相关资料,Java Stream中的filter方法可以使用多个条件来过滤数据,文中给出了详细的代码示例,需要的朋友可以参考下

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;
    }
}

输出如下:

附:stream().filter自定义匹配过滤

vip会员内容

到此这篇关于Java中Stream Filter多条件筛选过滤的文章就介绍到这了,更多相关Java Stream Filter多条件筛选内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot项目如何把接口参数中的空白值替换为null值(推荐)

    SpringBoot项目如何把接口参数中的空白值替换为null值(推荐)

    这篇文章主要介绍了SpringBoot项目如何把接口参数中的空白值替换为null值(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Java的基本数据类型和运算方法(必看篇)

    Java的基本数据类型和运算方法(必看篇)

    下面小编就为大家带来一篇Java的基本数据类型和运算方法(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • SpringBoot @DS注解实现多数据源配置以及问题解决办法

    SpringBoot @DS注解实现多数据源配置以及问题解决办法

    这篇文章主要给大家介绍了关于SpringBoot @DS注解实现多数据源配置以及问题解决办法,所谓多数据源就是一个Java EE项目中采用了不同数据库实例中的多个库,或者是同一个数据库实例中的多个不同库,需要的朋友可以参考下
    2023-11-11
  • Spring Cloud Alibaba Nacos Config加载配置详解流程

    Spring Cloud Alibaba Nacos Config加载配置详解流

    这篇文章主要介绍了Spring Cloud Alibaba Nacos Config配置中心实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-07-07
  • Java webSerivce的使用看完你就明白了

    Java webSerivce的使用看完你就明白了

    因为前段时间,需要使用到webService来调用公司的其他系统api接口,但是请求方式和我熟知的http请求不一样,是基于soap协议来传输xml数据格式,请求的参数极其复杂,需要封装多层xml数据格式,并且我不知道对方的api接口是什么语言,甚至不知道他们存在于什么平台
    2022-03-03
  • Spring中@Transactional注解的使用详解

    Spring中@Transactional注解的使用详解

    @Transactional注解是Spring提供的一种声明式事务管理方式,这篇文章主要为大家详细介绍了@Transactional注解的原理分析及使用,需要的可以参考一下
    2023-05-05
  • java.lang.Runtime.exec() Payload知识点详解

    java.lang.Runtime.exec() Payload知识点详解

    在本篇文章里小编给大家整理的是一篇关于java.lang.Runtime.exec() Payload知识点相关内容,有兴趣的朋友们学习下。
    2020-03-03
  • 基于Java HashMap的死循环的启示详解

    基于Java HashMap的死循环的启示详解

    本篇文章是对Java HashMap的死循环进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • 一篇文章带你搞定SpringBoot中的热部署devtools方法

    一篇文章带你搞定SpringBoot中的热部署devtools方法

    这篇文章主要介绍了一篇文章带你搞定SpringBoot中的热部署devtools方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java List双击事件实现方法

    Java List双击事件实现方法

    这篇文章主要介绍了Java List双击事件实现方法,需要的朋友可以参考下
    2014-09-09

最新评论