2016-10-05 5 views
4

내가 가지고 List :OR 필터를 java.util.stream에 적용하는 방법?

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

내가이 내 스트림을 준비 필터가 있습니다

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

"A"예를 들어 필터 다음은

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

을 어떻게 적용 할 수있는 필터 "A"또는 "T"와 동일합니까? 같은

뭔가 :

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

가 어떻게이 개 별도의 Predicate들과 함께이 작업을 수행 할 수 있습니다 내가 좋아하는 새로운 조건을 만들지 않으

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

?

+2

https://docs.oracle.com/javase/8/docs/api/java/util /function/Predicate.html#or-java.util.function.Predicate- –

+1

왜 익명 기능이 요구 사항에 맞지 않습니까? mylist.stream(). filter (s -> s.startsWith ("A") || s.startsWith ("T")) forEach (System.out :: println); 덕분에 –

답변

8

당신은 단순히 2 Predicates 사이 .or을 사용할 수

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

결과 :

filtered : Abla 
filtered : Tbla 
+1

. 이제 알았어. –

관련 문제