필터링
필터링은 중간 처리 기능으로 요소를 걸러내는 역할을 한다. 필터링 메소드인 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))
}
}