/////
Search
Duplicate
1️⃣

필터링

1. 프레디케이트로 필터링

스트림 인터페이스는 filter 메서드를 지원한다. filter 메서드는 프레디케이트(<T> → boolean)를 인수로 받아서 프레디케이트와 일치하는 모든 요소를 포함하는 스트림을 반환한다.
예를 들어 다음 코드에서처럼 모든 채식요리를 필터링해서 채식 메뉴를 만들 수 있다.
List<Dish> vegetarianMenu = menu.stream() .filter(Dish::isVegetarian) .collect(toList());
Java
복사

2. 고유 요소 필터링

스트림은 고유 요소로 이루어진 스트림을 반환하는 distinct 메서드도 지원한다.
고유 여부는 스트림에서 만든 객체의 hashCode, equals로 결정, 동등성을 이용할 수도 동일성을 이용할 수도 있다.
예를 들어 다음 코드에서처럼 리스트의 모든 짝수를 선택하고 중복을 필터링한다.
List<Integer> numbers = Arrays.asList(1, 2, 1, 3, 3, 2, 4); numbers.stream() .filter(i -> i % 2 == 0) .distinct() .forEach(System.out::println);
Java
복사