나는 Foo
요소의 컬렉션 List<Foo>
있습니다.Java 8 술어로 특정 요소 만 필터링하는 방법?</p> <pre><code>class Foo { private TypeEnum type; private int amount; //getters, setters ... } </code></pre> <p><code>Foo</code> 유형 <code>TypeEnum.A</code> 및 <code>TypeEnum.B</code> 될 수 있습니다
목록에서 해당 요소가 type == TypeEnum.B
이면 amount
이 0보다 큰 (amount > 0
) 개의 요소 만 목록에서 가져 오려고합니다.
Java 8 Streams filter()
메서드로 어떻게 할 수 있습니까?
내가 사용하는 경우 :
List<Foo> l = list.stream()
.filter(i -> i.getType().equals(TypeEnum.B) && i.getAmount() > 0)
.collect(Collectors.<Foo>toList());
나는 TypeEnum.B
은 있지만 TypeEnum.A
없이 Foo
요소를 얻을. 이 같은
기다립니다 당신이 둘 다 싶어를'TypeEnum.A '및'TypeEnum.B' 또는 하나만? 당신은 두 가지 변종을 언급합니다. – xander
@xander 예, 둘 다 값을 가져 오려고하지만 그 중 하나는 필터링됩니다. – kuba44