본문 바로가기
자바

hashmap을 직접 초기화하는 방법 (리터럴 방식으로)?

by º기록 2021. 4. 9.
반응형

Java Hashmap을 초기화하는 방법이 있습니까? :

Map<String,String> test = 
    new HashMap<String, String>{"test":"test","test":"test"};

올바른 구문은 무엇입니까?나는 이것과 관련하여 아무것도 찾지 못했습니다.이게 가능해?나는 맵을 만들지 않고지도를 만들 때 미리 알려지지 않는지도에 "최종 / 정적"값을 넣는 가장 짧은 / 가장 빠른 방법을 찾고 있습니다.

 

해결 방법

 

단일 항목 만 필요합니다. collections.singletonmap ( "key", "값") 가 있습니다.

예, 이제 이것은 가능합니다.Java 9에서는 맵 생성을 단순화하는 공장 메소드가 추가되었습니다.

// this works for up to 10 elements:
Map<String, String> test1 = Map.of(
    "a", "b",
    "c", "d"
);

// this works for any number of elements:
import static java.util.Map.entry;    
Map<String, String> test2 = Map.ofEntries(
    entry("a", "b"),
    entry("c", "d")
);

test test2 위의 예에서는 맵을 표현하는 다른 방법으로 test2 와 동일합니다. map.of 메소드는 맵에서 최대 10 개의 요소에 대해 정의되며 map.ofentries 메소드는 그런 제한이 없습니다.

이 경우 결과 맵은 불변의지도가 될 것입니다.지도를 변경할 수있게하려면 다시 복사 할 수 있습니다. mutableMap = 새로운 해시 맵을 사용하여 (map.of ( "a", "b");


아니요, 모든 요소를 수동으로 추가해야합니다.익명 서브 클래스의 초기화자를 사용하여 구문을 조금 더 짧게 만듭니다.

Map<String, String> myMap = new HashMap<String, String>() {{
        put("a", "b");
        put("c", "d");
    }};

그러나 익명의 서브 클래스는 어떤 경우에는 원하지 않는 동작을 소개 할 수 있습니다.예를 들어 다음과 같습니다.

초기화 기능을 사용하면 이니셜 라이저에서지도를 생성 할 수 있지만 불쾌한 부작용을 피할 수 있습니다.

Map<String, String> myMap = createMap();

private static Map<String, String> createMap() {
    Map<String,String> myMap = new HashMap<String,String>();
    myMap.put("a", "b");
    myMap.put("c", "d");
    return myMap;
}

 

참조 페이지 https://stackoverflow.com/questions/6802483

 

 

반응형

댓글