1. 개요

이 기사에서는 Java에서 빈 Map 을 초기화하는 다양한 방법을 살펴보겠습니다 .

다양한 방법을 확인하기 위해 Java 8과 Java 9를 사용할 것입니다.

2. 자바 컬렉션 사용하기

Java Collections 모듈에서 제공 하는 emptyMap() 메서드 를 사용하여 빈 을 만들 수 있습니다 . 이렇게 하면 자연적으로 직렬화 할 수 있는 빈 맵 이 형성됩니다. 이 메소드는 Collections Library의 Java 1.5에서 도입되었습니다. 이것은 불변의 Map 을 생성할 것입니다 :

Map<String, String> emptyMap = Collections.emptyMap();

참고: 생성된 Map 는 본질적으로 변경할 수 없기 때문에 사용자가 항목을 추가하거나 Map 에 어떤 유형의 수정도 수행할 수 없습니다 . Map 에서 키-값 쌍을 추가하거나 수정하려고 하면 java.lang.UnsupportedOperationException 이 발생합니다 .

Map 의 생성 및 초기화를 지원하는 메서드가 두 개 더 있습니다 . emptySortedMap()변경할 수 없는 유형 의 빈 SortedMap 을 반환합니다. Sorted Map 은 키에 대한 추가 전체 순서를 제공하는 맵 입니다. 메서드로 만든 맵 은 본질적으로 직렬화할 수 있습니다.

SortedMap<String, String> sortedMap = Collections.emptySortedMap();

Java 컬렉션에서 제공하는 다른 메서드 는 빈 NavigableMap 을 반환하는 emptyNavigableMap() 입니다 . 비어 있는 정렬된 Map 과 동일한 속성을 가 집니다. 유일한 차이점은 이 메서드는 탐색 가능한 Map 을 반환한다는 것 입니다. Navigable Map 은 주어진 검색 대상에 대해 가장 가까운 일치 항목을 반환하는 기존의 정렬된 Map 구현 의 확장입니다.

NavigableMap<String, String> navigableMap = Collections.emptyNavigableMap();

위의 모든 메서드 는 본질적으로 변경할 수 없는 Maps 를 반환하며 이러한 Maps 에 새 항목을 추가할 수 없습니다 . 키-값 쌍을 강제로 추가, 삭제 또는 수정하려고 하면 UnsupportedOperationException 이 발생합니다.

3. 생성자를 사용하여 맵 초기화

HashMap, LinkedHashMap, TreeMap 등 다양한 Map 구현 의 생성자를 사용하여 Map 을 초기화할 수 있습니다 . 이러한 모든 초기화 는 필요한 경우 나중에 항목을 추가할 수 있는 빈 맵 을 만듭니다.

Map hashMap = new HashMap();
Map linkedHashMap = new LinkedHashMap();
Map treeMap = new TreeMap();

위의 은 변경 가능하며 이 접근 방식을 사용하는 이점 중 하나인 새 항목을 수락할 수 있습니다. 유형의 초기화 중에 생성 된 맵 은 비어 있습니다. 정적 코드 블록 에서 을 정의할 수 있습니다 .

4. Map.of() 를 사용한 Java 9 방식

Java 9에는 Interface Private Methods, Anonymous 클래스, 플랫폼 모듈 시스템 등과 같은 많은 새로운 기능이 함께 제공됩니다 . Map.of () 는 Java 9 버전에서 도입된 팩토리 메서드입니다. 이 메서드는 0개의 매핑을 생성 하는 변경 불가능한 맵 을 반환합니다. 이 메소드에서 제공하는 인터페이스는 Java Collections Framework 아래에 있습니다. Map.of (key1, value1, key2, value2, …..) 는 최대 10개의 키-값 쌍만 가질 수 있습니다.

Map 을 초기화하기 위해 이 메서드에서 키-값 쌍을 전달하지 않습니다.

Map<String, String> emptyMapUsingJava9 = Map.of();

이 팩토리 메서드는 변경 불가능한 Map 을 생성하므로 키-값 쌍을 추가, 삭제 또는 수정할 수 없습니다. UnsupportedOperationException  은 초기화 후 에서 변형을 시도할 때 발생합니다 . 그만큼. 키-값 쌍의 추가 또는 삭제도 지원되지 않으며 위의 예외가 발생합니다.

참고: Java 9 의 Map.of() 메서드는 원하는 키-값 쌍 으로 변경할 수 없는 의 초기화를 단순화 합니다.

5. 구아바 사용

지금까지 핵심 Java를 사용하여 빈 Map 을 초기화하는 다양한 방법을 살펴보았습니다 . 이제 계속 진행 하여 Guava 라이브러리를 사용하여 Map 를 초기화하는 방법을 확인하겠습니다.

Map<String, String> articles = ImmutableMap.of();

위의 방법은 Guava 라이브러리를 사용하여 변경할 수 없는 빈 맵 을 만듭니다.

어떤 경우에는 변경할 수 없는 Map 이 필요하지 않습니다 . Maps  클래스 를 사용하여 변경 가능한 맵 을 초기화할 수 있습니다.

Map<String, String> emptyMap = Maps.newHashMap();

이러한 유형의 초기화는 변경 가능한 Map 을 생성합니다. 즉, 이 Map 에 항목을 추가할 수 있습니다 . 그러나 이 맵 의 기본 초기화 는 비어 있고 항목을 포함하지 않습니다.

특정 키 및 값 유형으로 을 초기화할 수도 있습니다. 이렇게 하면 미리 정의된 요소 유형이 있는 이 생성 되고 따르지 않으면 예외가 발생합니다.

Map genericEmptyMap = Maps.<String, Integer>newHashMap();

즉, 키는 문자열이고 값은 정수인 빈 맵 을 생성합니다. 초기화에 사용되는 한 쌍의 꺾쇠괄호는 Diamond Syntax 로 알려져 있습니다 . 이렇게 하면 Maps 클래스 의 생성자를 호출하는 정의된 형식 인수를 사용하여 Map 이 생성됩니다.

아래 구문을 사용하여 구아바에서 변경 가능한 을 만들 수도 있습니다 .

Map<String, String> emptyMapUsingGuava = Maps.newHashMap(ImmutableMap.of());

결론적으로 위의 방법은 Java에서 빈 Map 을 생성합니다. 본질적으로 변경 가능하므로 이 에 항목을 추가할 수 있습니다 .

ImmutableMap.of() 는 또한 항목이 있는 을 생성하기 위한 메서드 버전을 오버로드 했습니다. Map 을 만들고 있으므로 오버로드된 메서드를 사용하기 위해 메서드 괄호 안에 매개 변수를 전달할 필요가 없습니다.

7. 결론

이 기사에서는 Empty Map 을 초기화하는 다양한 방법을 살펴보았습니다 . Java 9 이후로 이 분야에서 엄청난 개선이 있었음을 알 수 있습니다 . Maps 를 만들고 초기화 하기 위한 새로운 팩터리 메서드가 있습니다.

항상 그렇듯이 전체 소스 코드는 Github에서 사용할 수 있습니다 .

Generic footer banner