2017-09-13 1 views
4

"items"목록이 있고 각 항목의 item.posts 속성은 post-instances 목록입니다.List anyMatch 스트림

나는 두 가지 속성에 의해 내 "항목"-list를 필터링 할 :

인 아이템의 게시물이 활성화 된 경우 "item.isBig는"와, 다음 반환 Stream를 수집하는 경우

.

그러나 "i.getPosts # isEnabled"로 "anyMatch"를 수행하는 방법을 알지 못합니다. 당신이 collect와 함께 사용할 수 있도록

items.stream() 
    .filter(Item::isBig) 
    .anyMatch(i.getPosts()->p.isEnabled) // this does not work 
    .collect(Collectors.toList()); 

답변

7

anyMatch는, 터미널 작업입니다.

List<Item> filtered = 
    items.stream() 
     .filter(Item::isBig) 
     .filter(i -> i.getPosts().stream().anyMatch(Post::isEnabled)) 
     .collect(Collectors.toList()); 

또는 하나 개의 필터로 결합 :

두 필터를 적용 할 수 있습니다

List<Item> filtered = 
    items.stream() 
     .filter(i -> i.isBig() && i.getPosts().stream().anyMatch(Post::isEnabled)) 
     .collect(Collectors.toList());