filter() 메서드란?
filter() 메서드는, 주어진 조건을 만족하는 요소들로 구성된 스트림만을 필터링하여 반환하는 메서드이다.
즉, 컬렉션의 요소들 중 조건문에 맞는 요소들만 추출하여 새로운 스트림으로 생성하여 반환한다.
filter()는 Stream API의 3단계 (Stream 생성 → 중간 연산 → 최종 연산) 중에서 중간 연산에 속한다. 따라서 이후에 최종 연산을 수행해야 filter() 연산이 실제로 수행된다.
collect(), map() 등 다른 메서드들과 같이 사용하는 경우가 많다.
filter() 메서드 사용 예시
1. 짝수 추출하기
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List.of(1, 2, 3, 4, 5, 6).stream() // Stream 객체 생성
.filter(n -> n % 2 == 0) // 중간 연산: filter()메서드로 짝수 필터링
.forEach(System.out::println); // 최종 연산: forEach() 메서드로 출력
}
}

숫자 말고도 문자열에서 글자수나, 특정 문자 포함 여부 등으로도 필터링이 가능하다.
아래 예시를 보자.
2. 문자열의 시작 문자 & 끝 문자 조건으로 필터링하기
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("Apple");
list.add("Banana");
list.add("Orange");
System.out.println("A로 시작하는 요소 출력");
list.stream() // Stream 객체 생성
.filter(fruit_1 -> fruit_1.startsWith("A")) // A로 시작하는 요소만 필터링
.forEach(fruit_1 -> System.out.println(fruit_1)); // 필터링한 결과 출력
System.out.println("\n" + "e로 끝나는 요소 출력");
list.stream() // Stream 객체 생성
.filter(fruit_2 -> fruit_2.endsWith("e")) // e로 끝나는 요소만 필터링
.forEach(fruit_2 -> System.out.println(fruit_2)); // 필터링한 결과 출력
}
}

실행 결과 잘 필터링된것을 확인할 수 있다.
.length() 등 다른 문자열 관련 함수들도 활용 가능하다!
'Java' 카테고리의 다른 글
[Java] - Stream API ③ distinct()로 중복 요소 제거하기 (0) | 2025.02.18 |
---|---|
[Java] - Stream API ⓛ forEach() 사용법 정리 (0) | 2025.02.15 |
[Java] - 스트림(Stream) API란? (0) | 2025.02.14 |
[Java] - 람다 표현식(Lamda expression) (0) | 2025.02.13 |
[Java] - ArrayList 기본 사용법 (0) | 2024.07.10 |