Java - 비교기를 사용하여 값으로 트리맵 정렬
컬렉션 TreeMap은 기본적으로 키별로 정렬되지만 정렬해야 하는 경우 TreeMap을 값으로 사용하는 경우 Java는 다음을 사용하여 이 작업을 수행하는 방법을 제공합니다. comparator.
예:
package codeurjava;
import java.util.*;
class TreeMapSort {
// 값으로 트리맵 요소 정렬
public static> Map sortByValues(final Map {
ComparatorvalueComparator = 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[]) {
TreeMaptreemap = 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
참조: