stream filter 多条件筛选

要写一个静态方法 在静态方法中编写条件判断 符合返回true 否则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;
    }
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Java Stream中的filter方法可以使用多个条件过滤数据。可以使用多个Predicate对象来定义不同的条件,然后使用and()或or()方法将它们组合起来。 例如,假设我们有一个Person类,它有两个属性:age和gender。我们想要过滤出所有年龄大于18岁且性别为女性的人,可以使用以下代码: List<Person> people = ... // 获取所有人的列表 List<Person> filteredPeople = people.stream() .filter(p -> p.getAge() > 18) // 第一个条件:年龄大于18岁 .filter(p -> p.getGender().equals("female")) // 第二个条件:性别为女性 .collect(Collectors.toList()); // 将过滤后的结果收集到一个列表中 在上面的代码中,我们使用了两个filter方法来定义两个不同的条件,然后使用and()方法将它们组合起来。最后,我们使用collect()方法将过滤后的结果收集到一个列表中。 ### 回答2: Java Streamfilter操作可以通过多个条件来进行筛选。为了在filter操作中使用多个条件,可以将多个条件合并为一个条件。 首先,可以使用逻辑运算符(如&&、||)将多个条件组合在一起,以定义一个复合条件。例如: ``` List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6); Stream<Integer> filteredNumbers = numbers.stream() .filter(num -> num >= 3 && num <= 5); ``` 上述代码中,筛选出值大于等于3且小于等于5的数字。 另外,还可以使用Predicate接口的and()和or()方法来组合多个条件。例如: ``` List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6); Predicate<Integer> even = num -> num % 2 == 0; Predicate<Integer> greaterThanThree = num -> num > 3; Stream<Integer> filteredNumbers = numbers.stream() .filter(even.and(greaterThanThree)); ``` 上述代码中,筛选出大于3且为偶数的数字。 此外,还可以使用自定义的lambda表达式来定义更复杂的条件。例如: ``` List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David"); Stream<String> filteredNames = names.stream() .filter(name -> name.length() >= 5 && name.startsWith("A")); ``` 上述代码中,筛选出长度大于等于5并且以"A"开头的名字。 总之,Java Streamfilter操作可以灵活地组合多个条件来进行筛选,可以使用逻辑运算符、Predicate接口的方法或者自定义的lambda表达式来实现。 ### 回答3: 在JavaStream中,我们可以使用filter方法来对流中的元素进行过滤操作。而要实现多条件过滤,则需要用到Lambda表达式和Stream多个filter方法的组合。 首先,我们可以使用filter方法来实现一个简单的条件过滤。例如,我们有一个包含整数的流,需要过滤掉小于等于5的元素,可以这样做: ``` List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); List<Integer> filteredNumbers = numbers.stream() .filter(number -> number > 5) .collect(Collectors.toList()); ``` 上述代码中,我们通过lambda表达式`number -> number > 5`指定了过滤条件,然后使用filter方法对元素进行过滤,并最终使用collect方法将过滤后的结果收集到一个新的List中。 如果我们需要实现多个条件过滤,可以直接在Lambda表达式中编写多个条件。例如,要过滤掉小于等于5且为奇数的元素,可以这样做: ``` List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); List<Integer> filteredNumbers = numbers.stream() .filter(number -> number > 5 && number % 2 == 0) .collect(Collectors.toList()); ``` 上述代码中,我们通过添加逻辑运算符&&将两个条件组合在一起,其中`number > 5`表示数字大于5,`number % 2 == 0`表示数字为偶数。这样就实现了对小于等于5且为奇数的元素进行过滤。 需要注意的是,对于多个条件过滤,我们应该按照实际需求来编写Lambda表达式,保证逻辑的正确性。另外,可以使用`||`运算符来实现或条件过滤,使用`!`运算符来实现非条件过滤。 综上所述,通过使用Lambda表达式和Streamfilter方法,我们可以实现多条件过滤操作,对流中的元素进行更加灵活和精确的筛选

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值