어떻게 직접 초기화하지 이스마프 (받을시간은 ipv6-literal. 방식)?
이 같은 다른 방법으로 Java 이스마프 초기화중 있나요?:
Map<String,String> test =
new HashMap<String, String>{"test":"test","test":"test"};
어떤 약간만이라도 올바른 구문에? 이에 대해 나는 아무것도 없습니다. 과연 그게 가능할까. 가장 짧은 / 가장 빠른 방법, 일부 " final/static" 동일팔레트에 찾고 있습니다. 지도를 만들 때 변경되지 않는 값을 미리 알고 있으며 맵.
986
6
Java 의 버전 9 이상:
예, 이제 이 가능하다. 자바 가상 머신 (jvm) 에 추가된 9 단순화할 수 있는 방법을 몇 가지 팩터리의 지도 작성.
위의 예에서, 그냥 'test' 와 '' 을 모두 같은 다양한 방법을 통해 표현하고 있는 매핑해야 test2 가 있습니다. '방법' 이 맵에서 최대 10 개의 요소를 마피로프 정의되어 있는 반면, '방법' 등 제한값 마피오펜트리스 없을 것이다.
단, 이 경우 결과 매핑해야 불변 매핑해야 됩니다. 스케쳐내 매핑됩니까 변경 가능, 다시 '이 될 수 있습니다. (예: = new HashMap< > 무터블마프 복제본에 사용하여, (마피로프 (,, " a" b" ";)),'
(참조 [젶 269] (http://openjdk.java.net/jeps/269) 및 [Javadoc] (https://docs.oracle.com/javase/9/docs/api/java/util/Map.html))
최대 jave 버전 8:
모든 요소를 추가 아니요인 할 것이라고 합니다. 익명의 초기화 구문 만들 수 있는 하위 클래스를 사용할 수 있습니다 조금 짧다.
그러나 경우에 따라 익명 하위 권능은하나님께 원치 않는 비헤이비어를 소개하십시오. 여기에는 예를 들면 다음과 같습니다.
또 지도를 만들 수 있는 함수를 사용하여 초기화하려면 활성화하십시오 불쾌한 부작용을 피할 수 있지만, 초기화.
이것은 하나의 방법입니다.
그러나 그 위의 코드는 이해하겠니 및 smartupdate 않도록 주의해야 합니다 (e-lab 은 새로운 클래스를 통해 상속됩니다 이스마프). 따라서 여기서 더 읽어야 합니다. 도브레브라체니시알이제이션 http://www.c2.com/cgi/wiki? 구아바, 또는 단순히 사용합니다.
3rd party 허용하시겠습니까 경우 libs & # 39 사용할 수 있습니다. 구아바 의 이무터블마프 충족합니다 같은 ipv6-literal. 간략하게:
이 방법은 최대 [5 키 / 값 쌍] [3], [구성기는] [4] 는 그렇지 않으면 사용할 수 있습니다.
< br/>;
[3]: https://google.github.io/guava/releases/snapshot/api/docs/com/google/common/collect/ImmutableMap.html # k v v v v k k k k v - [4]: https://google.github.io/guava/releases/snapshot/api/docs/com/google/common/collect/ImmutableMap.html # 구성기는 -
이 방법으로 직접판매용 없다 - Java 주님으로부터그에게 매핑해야 리터럴 (이들은 아직 - 내가 생각 대한 제안 jave 8).
어떤 사람들은 다음과 같습니다.
이렇게 하면, 이 값을 갖는 이스마프 익명의 의 하위 클래스 인스턴스 초기화 됩니다. (By the way, 지도 can& # 39, t 컨테인먼트하는 동일한 가치를 다시 한 번 두 번째 동일팔레트에 덮어써지며 첫 번째. # 39, ll 서로 다른 값을 사용할 i& 향후 참조용이므로.)
일반적인 방법으로 약간만이라도 이 (for a 로컬 변수):
이 경우, 또는 'test' 매핑해야 가변적입니다 인스턴스입니다 초기화하지 받을시간은 구성자를 동일팔레트에 인스턴스입니다 초기화.
'Test' 의 경우, 정적 클래스 변수 초기화 동일팔레트에 맵 () 은 초기화.
절대 변하지 초기화하지 랩 후 원하는 경우에는 매핑됩니까 맵에 콜레스티언스트런모드리피아브레마프 (.) '에서' 합니다. 정적 초기화 너무 이 작업을 수행할 수 있습니다.
(I& # 39 할 수 있다면, 이제 마지막 'test' m not 합니다. 시도해 보고 왔어요.)
일반 자바 클래스를 사용하여 7 대체 및 바라리스: '이 메서드를 사용하여 클래스의 이스마프부이더 만듭니다. <! - 모든 언어: java->.
사용 방법은 다음과 같습니다.