mcf*_*oft 4 java java-8 java-stream
我有一个List:
List<String> mylist=Arrays.asList("Abla","Tbla","Cbla");
Run Code Online (Sandbox Code Playgroud)
我为我的流准备了2个过滤器:
Predicate<String> startswith_A= s-> s.startsWith("A");
Predicate<String> startswith_T= s-> s.startsWith("T");
Run Code Online (Sandbox Code Playgroud)
以下是"A"的示例过滤器:
mylist.stream().filter(startswith_A).forEach(mystring -> {
System.out.println("filtered : " + mystring);
});
Run Code Online (Sandbox Code Playgroud)
如何将相同的内容应用于过滤器"A"或"T"?
就像是:
mylist.stream().filter(startswith_A || startswith_T).forEach(mystring -> {
System.out.println("filtered : " + mystring);
});
Run Code Online (Sandbox Code Playgroud)
我不想创建一个新的谓词,如:
Predicate<String> startswith_A_or_T= s-> s.startsWith("T") || s.startsWith("A");
Run Code Online (Sandbox Code Playgroud)
我怎么能用2个单独的Predicates 做到这一点?
你可以简单地.or在2之间使用Predicates:
mylist.stream()
.filter(startswith_A.or(startswith_T))
.forEach(mystring -> { System.out.println("filtered : " + mystring); });
Run Code Online (Sandbox Code Playgroud)
结果:
filtered : Abla
filtered : Tbla
Run Code Online (Sandbox Code Playgroud)