람다식과 Collection

정순동·2024년 1월 5일
0

자바기초

목록 보기
75/89

JDK1.8버전 부터 람다식이 추가되며, Collection프레임 워크의 인터페이스에 다수의 디폴드 메서드가 추가되었다. 그 중 일부는 함수형 인터페이스를 사용한다.

와일드 카드는 너무 복잡해 지기에 생략됨.

이름들만 봐도 어떤 메서드인지 알 수 있는데, Map인터페이스에 있는 'compute'로 시작하는 메서드들은 맵의 value를 변환하는 일을 하고 merge()는 Map을 병합하는 일을 한다. 이 메서드들을 어떤 식으로 사용하는 지는 아래 예제를 참고하자.

예제

import java.util.*;

public class CollectionLambdaExample {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        for(int i = 0; i < 10; i++) {
            list.add(i);
        }

        // list의 모든 요소 출력
        list.forEach(i -> System.out.print(i + ", "));
        System.out.println();

        // list에서 2 또는 3의 배수를 제거한다.
        list.removeIf(x -> x % 2 == 0 || x % 3 == 0);
        System.out.println(list);

        list.replaceAll(i -> i * 10); // list의 각 요소에 10을 곱한다.
        System.out.println(list);

        Map<String, String> map = new HashMap<>();
        map.put("1", "1");
        map.put("2", "2");
        map.put("3", "3");
        map.put("4", "4");

        // map의 모든 요소를 {k, v}의 형식으로 출력한다.
        map.forEach((k, v) -> System.out.print("{" + k + ", " + v + "},"));
        System.out.println();
    }
}

JAVA8의 람다식 덕분에 기존에 사용하기 불편하던 컬렉션 프레임 워크가 굉장히 사용하기 쉬워졌다.

0개의 댓글