필터링


필터링은 중간 처리 기능으로 요소를 걸러내는 역할을 한다. 필터링 메소드인 distinct() 와 filter() 메소드는 모든 스트림이 가지고 있는 공통 메소드이다.


리턴 타입 메소드(매개 변수) 설명
Stream
IntSTream
LongStream
DoubleStream
distinct()
중복 제거
filter(Predicate) 조건 필터링
filter(InPredicate)
filter(LongPredicate)
filter(DoublePredicate)


distinct() 메소드는 중복을 제겅하는데, Stream 의 경우 Object, equals (Object) 가 true 이면 동일한 객체로 판단하고 중복을 제거한다. IntStream, LongStream, DoubleStream은 동일값일 경우 중복을 제거한다.



filter() 메소드는 매개값으로 주어진 Predicate가 true를 리턴하는 요소만 필터링한다.



import java.util.Arrays;
import java.util.List;

public class FilteringExample{
  public static void main(Strina[] args){
    List<String> names = Arrays.asList("홍길동", "고길동", "오길동", "정길동");

    names.stream()
        .distinct() // 중복제거
        .forEach(n -> System.out.println(n));
    System.out.println();

    names.stream()
        .filter(n -> n.startsWith("오")) // 필터링
        .forEach(n -> System.out.println(n));
    System.out.println();

    names.stream()
        .distinct() // 중복제거
        .filter(n -> n.startsWith("오")) // 필터링
        .forEach(n -> System.out.println(n))
  }
}