자바 맵 은 key 로 정렬 하고 Value 로 정렬 합 니 다.
이론 적 준비
Map 은 키 값 이 맞 는 집합 인터페이스 로 그 실현 유형 은 주로 HashMap, TreeMap, Hashtable, LinkedHashMap 등 을 포함한다.
TreeMap: 빨간색 - Black tree (Red - Black tree) 의 NavigableMap 을 기반 으로 이 맵 은 키 의 자연 순서에 따라 정렬 하거나 맵 을 만 들 때 제공 하 는 Comparator 에 따라 정렬 하 며 구체 적 으로 사용 하 는 구조 방법 에 달 려 있 습 니 다.
HashMap 의 값 은 순서 가 없습니다. key 의 HashCode 에 따라 이 루어 집 니 다. 이 무질서 한 HashMap 에 대해 우 리 는 어떻게 정렬 을 해 야 합 니까?TreeMap 의 value 정렬 을 참조 하 십시오.
Map. Entry 는 Collections 보 기 를 되 돌려 줍 니 다.
2. key 정렬
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 의 key 값 에 따라 정렬 되 지만, 때때로 우 리 는 TreeMap 의 value 에 따라 정렬 해 야 한다.value 정렬 은 Collections 의 sort (List < T > list, Comparator c) 방법 을 빌려 야 합 니 다. 이 방법 은 지 정 된 비교 기 가 발생 하 는 순서에 따라 지 정 된 목록 을 정렬 합 니 다.그러나 하나의 전제 조건 이 있다. 그것 은 모든 요소 가 제공 하 는 비교 기 에 따라 비교 할 수 있어 야 한 다 는 것 이다. 다음 과 같다.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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.