简体   繁体   English

如何将OR过滤器应用于java.util.stream?

[英]How to apply OR filters to a java.util.stream?

I have a List : 我有一个List

List<String> mylist=Arrays.asList("Abla","Tbla","Cbla");

I have 2 filters prepared for my stream: 我为我的流准备了2个过滤器:

Predicate<String> startswith_A= s-> s.startsWith("A");
Predicate<String> startswith_T= s-> s.startsWith("T");

Following example filters for "A": 以下是“A”的示例过滤器:

mylist.stream().filter(startswith_A).forEach(mystring -> {
    System.out.println("filtered : " + mystring);
});

How can I apply the same for a filter "A" or "T"? 如何将相同的内容应用于过滤器“A”或“T”?

Something like: 就像是:

mylist.stream().filter(startswith_A || startswith_T).forEach(mystring -> {
    System.out.println("filtered : " + mystring);
});

I don't want to create a new predicate like: 我不想创建一个新的谓词,如:

Predicate<String> startswith_A_or_T= s-> s.startsWith("T") || s.startsWith("A");

How can I do this with 2 seperate Predicate s? 我怎么能用2个单独的Predicate来做到这一点?

You could simply use .or between the 2 Predicates : 你可以简单地在2个Predicates之间使用.or

mylist.stream()
      .filter(startswith_A.or(startswith_T))
      .forEach(mystring -> { System.out.println("filtered : " + mystring); });

Result: 结果:

filtered : Abla
filtered : Tbla

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM