Java - 비교기를 사용하여 값으로 트리맵 정렬

컬렉션 TreeMap은 기본적으로 키별로 정렬되지만 정렬해야 하는 경우 TreeMap을 값으로 사용하는 경우 Java는 다음을 사용하여 이 작업을 수행하는 방법을 제공합니다. comparator.

예:

package codeurjava; 

import java.util.*;

class TreeMapSort {

// 값으로 트리맵 요소 정렬
public static > Map sortByValues(final Map {

Comparator valueComparator = new Comparator() {
public int compare(K k1, K k2) {
int compare = map.get(k1).compareTo(map.get(k2));
if (비교 == 0)
1을 반환합니다.
else
return 비교;
}
};

지도 TreeMap_triee_par_valeur = new TreeMap(valueComparator);
TreeMap_triee_par_valeur.putAll(지도);
반환 TreeMap_triee_par_valeur;
}

public static void main(String args[]) {

TreeMap treemap = new TreeMap();

// 요소
treemap.put("1", "e4");
treemap.put("2", "e5");
treemap.put("3", "e1");
treemap.put("4", "e3");
treemap.put("5", "e2");

System.out.println("정렬하기 전에:");

/* 이터레이터로 정렬되지 않은 트리맵 찾아보기 */

Set set = treemap.entrySet();
반복자 i = set.iterator();
// 엘리먼트 표시
while(i.hasNext()) {
Map.Entry entry entry = (Map.Entry)i.next();
System.out.print(entry.getKey() + " : ");
System.out.println(entry.getValue());
}

System.out.println("정렬 후:");
// sortByvalues()
Map 메서드 호출 TreeMap_triee_par_valeur = sortByValues(treemap);

/* Iterator로 정렬된 새 맵 탐색 */

set = TreeMap_triee_par_valeur.entrySet();
i = set.iterator();
// 엘리먼트 표시
while(i.hasNext()) {
Map.Entry entry entry = (Map.Entry)i.next();
System.out.print(entry.getKey() + " : ");
System.out.println(entry.getValue());
}

}
}

Execution

정렬하기 전에: 
1 : e4
2 : e5
3 : e1
4 : e3
5 : e2
정렬 후:
3 : e1
5 : e2
4 : e3
1 : e4
2 : e5

참조:

Java 문서 - 비교기(JavaSE 8)