java 맵 정렬 방법 (맵 집합 사용)
1. 맵을 간단히 소개하기 전에 맵 정렬을 설명하기 전에 맵을 조금 알아봅시다.맵은 키 값이 맞는 집합 인터페이스로 그 실현 클래스는 주로 HashMap, TreeMap, Hashtable, LinkedHashMap 등을 포함한다.이 네 가지 차이점은 다음과 같습니다(간단한 설명).
HashMap: 우리가 가장 자주 사용하는 맵은 키의 HashCode 값에 따라 데이터를 저장하고 키에 따라 그 값을 직접 얻을 수 있으며 매우 빠른 접근 속도를 가진다.HashMap은 최대 한 개의 기록된 키 값만 Null로 허용합니다.여러 레코드를 허용하는 Value는 Null입니다.비동기적.
TreeMap: 저장된 기록을 키에 따라 정렬할 수 있습니다. 기본값은 오름차순으로 정렬할 수도 있고, 정렬할 비교기를 지정할 수도 있습니다. Iterator로 TreeMap을 훑어볼 때 기록은 정렬된 것입니다.TreeMap에서 키의 값이null이면 안 됩니다.비동기적.
Hashtable:HashMap과 유사하지만 다른 것은:key와value의 값은null로 허용되지 않습니다.이것은 스레드의 동기화를 지원합니다. 즉, 언제든지 하나의 스레드만 Hashtable을 쓸 수 있기 때문에 Hashtale가 쓸 때 비교적 느리게 됩니다.
LinkedHashMap: 기록의 삽입 순서를 저장합니다. Iterator로 LinkedHashMap을 훑어볼 때 먼저 받은 기록은 먼저 삽입된 것이 틀림없습니다.돌아다니면서 Hash Map보다 느릴 거예요.키와value는 모두 비동기식으로 허용됩니다.
2. 지도 정렬 TreeMap
TreeMap은 기본적으로 오름차순이며, 정렬 방식을 바꾸려면 비교기:Comparator를 사용해야 합니다.Comparator는 집합 대상이나 그룹을 정렬할 수 있는 비교기 인터페이스로 이 인터페이스를 실현하는publiccompare(T o1, To2) 방법으로 정렬을 실현할 수 있다. 이 방법은 주로 첫 번째 매개 변수 o1에 따라 작거나 같거나 o2보다 크거나 각각 음정수, 0 또는 정수를 되돌려준다.다음과 같습니다.
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("c", "ccccc");
map.put("a", "aaaaa");
map.put("b", "bbbbb");
map.put("d", "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:ddddd c:ccccc b:bbbbb a:aaaaa
위의 예는 TreeMap의 키 값에 따라 정렬하는 것이지만, 때때로 우리는 TreeMap의value에 따라 정렬해야 한다.value 정렬에 대해 우리는 Collections의sort(List
public class TreeMapTest {
public static void main(String[] args) {
Map<String, String> map = new TreeMap<String, String>();
map.put("d", "ddddd");
map.put("b", "bbbbb");
map.put("a", "aaaaa");
map.put("c", "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());
}
}
}
실행 결과a:aaaaa b:bbbbb c:ccccc d:ddddd
HashMap
우리는 모두 HashMap의 값입니다. 순서가 없습니다. 그는 키의 HashCode에 따라 이루어집니다.이 무질서한 Hash Map에 대해 어떻게 정렬을 해야 하나요?TreeMap의 value 정렬을 참조하면 HashMap의 정렬도 마찬가지입니다.
public class HashMapTest {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("c", "ccccc");
map.put("a", "aaaaa");
map.put("b", "bbbbb");
map.put("d", "ddddd");
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());
}
}
}
실행 결과a:aaaaa b:bbbbb c:ccccc d:ddddd
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.