본문 바로가기
Java

[Java] - Stream API ② filter() 메서드

by 개발 고양이 2025. 2. 16.

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() 등 다른 문자열 관련 함수들도 활용 가능하다!