2015-01-22 1 views
0

나는 (술어 코드를 변경하지 않고) 술어 일치하지 않는 항목에 대한 반복자를 얻기 위해 술어의 기초를 알고 this question필터링 할 때 조건부와 반대가됩니까?

Predicate<Integer> isEven = new Predicate<Integer>() { 
    @Override public boolean apply(Integer number) { 
     return (number % 2) == 0; 
    }    
}; 
Iterable<Integer> evenNumbers = Iterables.filter(numbers, isEven); 

에서 복사 한 코드 아래 이해하지만 가능할까요?

+0

부정 부정 술어 'not isEven'을 만들 수 있습니다. –

답변

8

Predicates#not(Predicate)을 사용하십시오.

Iterable<Integer> oddNumbers = Iterables.filter(numbers, Predicates.not(isEven)); 
+0

정확히 내가 필요한 것. –

+0

@stuart 하하, 네. 감사! –

0

당신이 시도 할 수 :

removeIf(Iterable, Predicate) --> Removes all elements satisfying the predicate, using the Iterator.remove() method. 

Iterators.removeIf(Iterator, Predicate) 

자세한 내용은 here를 찾을 수 있습니다.

관련 문제