[Java] List filter 예제, 3가지 방법
June 03, 2024
리스트에 저장된 요소들을 특정 기준으로 필터링하는 방법 및 예제를 소개합니다.
1. Stream.filter()를 이용한 방법
리스트를 Stream으로 변환할 수 있으며, Stream.filter()
으로 리스트의 요소들을 필터링할 수 있습니다.
numbers.stream()
: 리스트 numbers를 Stream으로 변환filter(num -> num % 2 == 0)
: 짝수인 요소만 필터링collect(Collectors.toList())
: Stream 결과를 리스트로 변환
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Example {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
numbers.add(4);
numbers.add(5);
numbers.add(6);
// 짝수만 필터링
List<Integer> filteredList = numbers.stream()
.filter(num -> num % 2 == 0)
.collect(Collectors.toList());
// 필터링된 List 출력
for (Integer num : filteredList) {
System.out.print(num + " ");
}
}
}
Output:
2 4 6
Stream과 메소드 레퍼런스를 이용한 방법
위 예제에서 filter()
에 람다식을 전달하지 않고, 아래와 같이 메소드 레퍼런스를 전달할 수도 있습니다. 실행 결과는 동일합니다.
// 짝수만 필터링
Predicate<Integer> evenPredicate = num -> num % 2 == 0;
List<Integer> filteredList = numbers.stream()
.filter(evenPredicate)
.collect(Collectors.toList());
2. for문을 이용한 방법
다음과 같이 for문을 이용하여 리스트를 순회하면서 필터링할 수 있습니다. 필터링된 요소들은 다른 리스트에 저장합니다.
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
public class Example {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
numbers.add(4);
numbers.add(5);
numbers.add(6);
// 짝수만 필터링
List<Integer> filteredList = new ArrayList<>();
for (Integer num : numbers) {
if (num % 2 == 0) {
filteredList.add(num);
}
}
// 필터링된 List 출력
for (Integer num : filteredList) {
System.out.print(num + " ");
}
}
}
Output:
2 4 6
3. List.removeIf()를 이용한 방법
리스트에서 특정 조건에 해당하는 요소들을 모두 제거할 수 있습니다. 남기고 싶지 않은 요소들에 해당하는 조건을 설정하여 제거할 수 있습니다.
removeIf(num -> num % 2 != 0)
: 홀수인 숫자는 모두 제거
import java.util.ArrayList;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
numbers.add(4);
numbers.add(5);
numbers.add(6);
// 짝수가 아닌 숫자는 모두 제거
numbers.removeIf(num -> num % 2 != 0);
// 필터링된 List 출력
for (Integer num : numbers) {
System.out.print(num + " ");
}
}
}
Output:
2 4 6