반응형
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
반응형
'자바' 카테고리의 다른 글
Java에서 상수를 구현하는 가장 좋은 방법은 무엇입니까? (0) | 2021.04.09 |
---|---|
열거 형 값을 문자열 리터럴으로 사용합니다 (0) | 2021.04.09 |
java.net.connectException : 연결 거부되었습니다 (0) | 2021.04.09 |
ArrayList의 마지막 값을 얻는 방법 (0) | 2021.04.09 |
문자열의 특정 색인에서 문자를 교체 하시겠습니까? (0) | 2021.04.09 |
댓글