리스트에 저장된 요소들을 특정 기준으로 필터링하는 방법 및 예제를 소개합니다.

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