Java Map 키 정렬 및 Value 정렬 구현 방법
맵은 키 값이 맞는 집합 인터페이스로 그 실현 클래스는 주로 HashMap, TreeMap, Hashtable, LinkedHashMap 등을 포함한다.
TreeMap: 빨간색과 검은색 트리(Red-Black tree)를 기반으로 하는 NavigableMap을 구현합니다. 이 맵은 키의 자연 순서에 따라 정렬되거나 맵을 만들 때 제공되는Comparator에 따라 정렬됩니다. 구체적으로 사용하는 구조 방법에 따라 정렬됩니다.
HashMap의 값은 순서가 없습니다. 이것은 키의 HashCode에 따라 이루어집니다. 이 무질서한 HashMap에 대해 우리는 어떻게 정렬을 실현해야 합니까?TreeMap의 value 정렬을 참조합니다.
Map.Entry가 Collections 보기로 돌아갑니다.
2. 키 정렬
TreeMap은 기본적으로 오름차순이며, 정렬 방식을 바꾸려면 비교기:Comparator를 사용해야 합니다.Comparator는 집합 대상이나 그룹을 정렬할 수 있는 비교기 인터페이스로 이 인터페이스를 실현하는 public compare(T o1, To2) 방법으로 정렬할 수 있다. 다음과 같다.
import java.util.Comparator;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class TreeMapTest {
public static void main(String[] args) {
Map<String, String> map = new TreeMap<String, String>(
new Comparator<String>() {
public int compare(String obj1, String obj2) {
//
return obj2.compareTo(obj1);
}
});
map.put("b", "ccccc");
map.put("d", "aaaaa");
map.put("c", "bbbbb");
map.put("a", "ddddd");
Set<String> keySet = map.keySet();
Iterator<String> iter = keySet.iterator();
while (iter.hasNext()) {
String key = iter.next();
System.out.println(key + ":" + map.get(key));
}
}
}
실행 결과는 다음과 같습니다.
d:aaaaa
c:bbbbb
b:ccccc
a:ddddd
3. value 정렬위의 예는 TreeMap의 키 값에 따라 정렬하는 것이지만, 때때로 우리는 TreeMap의value에 따라 정렬해야 한다.value 정렬에 대해 우리는 Collections의sort(List
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
public class TreeMapTest {
public static void main(String[] args) {
Map<String, String> map = new TreeMap<String, String>();
map.put("a", "ddddd");
map.put("c", "bbbbb");
map.put("d", "aaaaa");
map.put("b", "ccccc");
// map.entrySet() list
List<Map.Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet());
//
Collections.sort(list,new Comparator<Map.Entry<String,String>>() {
//
public int compare(Entry<String, String> o1,
Entry<String, String> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
for(Map.Entry<String,String> mapping:list){
System.out.println(mapping.getKey()+":"+mapping.getValue());
}
}
}
실행 결과는 다음과 같습니다.
d:aaaaa
c:bbbbb
b:ccccc
a:ddddd
이상의 Java Map은 key 정렬과 Value 정렬의 실현 방법은 바로 편집자가 여러분에게 공유한 모든 내용입니다. 참고 부탁드리며 많은 응원 부탁드립니다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.