SeouliteLab

[Java/자바] 람다식과 filter() 메서드 활용하기 본문

프로그래밍

[Java/자바] 람다식과 filter() 메서드 활용하기

Seoulite Lab 2024. 3. 8. 09:22

자바에서는 람다식과 함께 filter() 메서드를 사용하여 컬렉션의 요소를 조건에 맞게 필터링할 수 있습니다. 이를 통해 코드의 가독성과 효율성을 높일 수 있습니다. 아래에서는 람다식과 filter() 메서드를 활용한 여러 예제를 살펴보겠습니다.

1. 리스트에서 짝수만 필터링하기

람다식과 filter() 메서드를 사용하여 리스트에서 짝수만 필터링하는 예제입니다.

import java.util.ArrayList;
import java.util.List;

public class FilterExample {
    public static void main(String[] args) {
        List numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);
        numbers.add(5);

        // 짝수만 필터링
        List evenNumbers = numbers.stream()
                                           .filter(num -> num % 2 == 0)
                                           .collect(Collectors.toList());

        System.out.println("짝수만 필터링 결과: " + evenNumbers);
    }
}

2. 문자열 리스트에서 길이가 3 이상인 요소만 필터링하기

람다식과 filter() 메서드를 사용하여 문자열 리스트에서 길이가 3 이상인 요소만 필터링하는 예제입니다.

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class FilterExample {
    public static void main(String[] args) {
        List strings = new ArrayList<>();
        strings.add("apple");
        strings.add("banana");
        strings.add("orange");
        strings.add("kiwi");

        // 길이가 3 이상인 문자열만 필터링
        List filteredStrings = strings.stream()
                                              .filter(str -> str.length() >= 3)
                                              .collect(Collectors.toList());

        System.out.println("길이가 3 이상인 문자열 필터링 결과: " + filteredStrings);
    }
}

3. 객체 리스트에서 특정 조건을 만족하는 요소 필터링하기

람다식과 filter() 메서드를 사용하여 객체 리스트에서 특정 조건을 만족하는 요소만 필터링하는 예제입니다.

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public int getAge() {
        return age;
    }
}

public class FilterExample {
    public static void main(String[] args) {
        List people = new ArrayList<>();
        people.add(new Person("Alice", 25));
        people.add(new Person("Bob", 30));
        people.add(new Person("Charlie", 20));

        // 나이가 25 이상인 사람만 필터링
        List filteredPeople = people.stream()
                                            .filter(person -> person.getAge() >= 25)
                                            .collect(Collectors.toList());

        System.out.println("나이가 25 이상인 사람 필터링 결과: " + filteredPeople);
    }
}

4. 배열에서 특정 조건을 만족하는 요소 필터링하기

람다식과 filter() 메서드를 사용하여 배열에서 특정 조건을 만족하는 요소만 필터링하는 예제입니다.

import java.util.Arrays;

public class FilterExample {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};

        // 짝수만 필터링
        int[] evenNumbers = Arrays.stream(numbers)
                                  .filter(num -> num % 2 == 0)
                                  .toArray();

        System.out.println("짝수만 필터링 결과: " + Arrays.toString(evenNumbers));
    }
}

5. 스트림에서 null 제외하고 필터링하기

람다식과 filter() 메서드를 사용하여 스트림에서 null 값을 제외하고 필터링하는 예제입니다.

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class FilterExample {
    public static void main(String[] args) {
        List strings = Arrays.asList("apple", null, "banana", null, "orange");

        // null이 아닌 값만 필터링
        List nonNullStrings = strings.stream()
                                             .filter(str -> str != null)
                                             .collect(Collectors.toList());

        System.out.println("null 제외한 문자열 필터링 결과: " + nonNullStrings);
    }
}

6. Stream API를 활용한 복 잡한 조건의 필터링

람다식과 filter() 메서드를 사용하여 스트림에서 복잡한 조건의 필터링을 수행하는 예제입니다.

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class FilterExample {
    public static void main(String[] args) {
        List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        // 짝수이면서 5보다 큰 값을 필터링
        List result = numbers.stream()
                                      .filter(num -> num % 2 == 0 && num > 5)
                                      .collect(Collectors.toList());

        System.out.println("짝수이면서 5보다 큰 값 필터링 결과: " + result);
    }
}