일반적으로 맵은 키 값 쌍으로 구성된 데이터 구조이며 각 키는 세트에서 고유합니다. k와 v를 사용하여 키와 값을 나타 내기 위해 Java의지도에 관한 9 가지 주요 문제를 설명하겠습니다.
0. 맵을 목록 유형으로 변환합니다
Java에서 MAP 인터페이스는 컬렉션을 얻는 세 가지 방법의 키 세트, 값 세트 및 키 값 세트를 제공합니다. 생성자 또는 addall () 메소드에 의해 모두 목록 유형으로 변환 될 수 있습니다. 다음 코드는 맵에서 배열 목록을 구성하는 방법을 보여줍니다.
// key listlist keylist = new ArrayList (map.keyset ()); // value listlist valuelist = new ArrayList (map.Valueset ()); // key-value listList entyRlist = new ArrayList (map.EntrySet ());
1. 입력을 통해지도를 가로 지르십시오
키 값 쌍이 map.entry라고하는 Java에서는이 방법이 있습니다. map.entryset ()는 키 값 컬렉션을 반환하는데, 이는 매우 효율적인 트래버스 방법입니다.
for (Entry Entry : Map.Entryset ()) {// keyk key = Entry.getKey (); // valuev value = enlic.getValue ();} 반복자는 특히 JDK1.5 이전에 자주 사용됩니다
반복자 itr = map.entryset (). iterator (); while (itr.hasnext ()) {entry entry = itr.next (); // keyk key = entry.getKey (); // get valuev value = actor.getValue ();} 2. 키에 따라 맵을 정렬하십시오
정렬은지도의 KE에서 자주 작동해야합니다. 한 가지 방법은 비교기를 통해이를 구현하는 것입니다.
목록 목록 = new ArrayList (map.Entryset ()); collections.sort (list, new comporator () {@overridepublic int compare (enther e1, entery e2) {return e1.getKey (). compareto (e2.getKey ());}); 또 다른 방법은 SortedMap을 사용하는 것이지만 비슷한 인터페이스를 구현해야합니다.
SortedMap SortedMap = new Treemap (new Comporator () {@overridepublic int compar (k k1, k k2) {return k1.compareto (k2);}}); SortedMap.putall (map);3. 값으로 맵을 정렬 <br /> 이것은 이전 요점과 다소 유사합니다. 코드는 다음과 같습니다.
목록 List = new ArrayList (map.EntrySet ()); collections.SORT (list, new Comporator () {@OverRidePublic int Compar (Entry E1, Entry E2) {return e1.getValue (). Compareto (e2.getValue ());});4. 정적 상수 맵을 초기화합니다
글로벌 정적 맵을 만들려면 두 가지 방법이 있으며 스레드 안전입니다.
test1에서는 맵이 정적이라고 선언하지만 test1.map.put (3, "3")과 마찬가지로 초기화 될 때 여전히 값을 변경할 수 있습니다.
Test2에서는 내부 클래스를 통해 수정되지 않도록 설정하므로 Test2.map.put (3, "Three")을 실행하면
UnsupportedOperationException 예외는 수정을 금지합니다. public class test1 {private static final 맵 맵; static {map = new hashmap (); map.put (1, "one"); map.put (2, "two");}} public class test2 {private static final 맵 맵; static {map amap = new Hashmap (); amap.put (1, "1"); collections.unmodifiablemap (AMAP);}} 5. 해시 맵, 트리 맵 및 해시 가능의 차이
맵 인터페이스에는 Hashmap, Treemap 및 Hashtable의 세 가지 구현이 있습니다.
그들은 다릅니다. 자세한 내용은 "Hashmap vs. Treemap vs. Hashtable vs. Linkedhashmap"기사를 참조하십시오.
6.지도에서 리버스 쿼리
맵에 키 값 쌍을 추가 한 후 맵에서 키와 값이 하나에 해당하고 키가 값에 해당 함을 의미합니다. 그러나 때로는 특정 값을 통해 키를 검색하는 것과 같은 쿼리를 역전시켜야합니다. 이 데이터 구조를 양도 방향 맵이라고합니다. 불행히도 JDK는이를 지원하지 않습니다.
Apache와 Guava는 공동 으로이 양방향지도 구현을 제공하며, 여기서 키와 값이 모두 1 : 1 관계이어야한다는 것을 규정합니다.
7.지도를 복사합니다
Java는 맵의 복제를 실현할 수있는 많은 방법을 제공하지만 이러한 방법은 언제든지 동기화되지 않을 수 있습니다. 간단히 말해서, 그것은지도에서 발생하는 변화이며, 복사 한 것은 동일하게 유지됩니다. 비교적 효율적인 구현 방법은 다음과 같습니다.
MAP 복사 한 맵 = collections.SynChronizedMap (map);
물론 복제하는 또 다른 방법이 있습니다. 그러나 우리의 Java 창시자 Josh Bloch는이 방법을 권장하지 않습니다. 그는 한 번지도 클로닝에 대한 인터뷰에서 다음과 같이 말했다. 복제 방법은 사람들이 필요하기 때문에 많은 수업에서 제공됩니다. 그러나 복제는 매우 제한적이며 종종 불필요한 영향을 유발합니다. (원본 텍스트 "사본 생성자 대 복제")))
8. 빈지도를 만듭니다
이 맵을 사용할 수 없도록 설정된 경우 다음에 의해 구현 될 수 있습니다.
map = collections.emptymap ();
반대로, 우리가 그것을 사용할 수있을 때, 우리는
map = new Hashmap ();
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.