Java에서 키로 HashMap을 정렬하는 방법

우리는 값으로 HashMap을 정렬하는 방법을 보았습니다.  이 자습서에서는 TreeMap 클래스를 사용하여 키별로 항목을 정렬하는 방법을 알아봅니다. 우리는 HashMap 이 기본적으로 요소 삽입 순서를 유지하지 않는다는 것을 알고 있습니다. Java에서 Map 또는 HashMap은 모두 키 또는 값으로 정렬할 수 있습니다.

1- Sort HashMap using TreeMap

이 코드는 키별로 HashMap을 정렬하며   TreeMap.

import java.util.HashMap; 
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap입니다.

public class Triclés {

public static void main(String[] args) {

Map< 문자열,문자열입니다> hmap = 새로운 HashMap< 문자열,문자열입니다> ();
hmap.put("4", "4");
hmap.put("2", "2");
hmap.put("3", "3");
hmap.put("1", "하나");

세트 세트 = hmap.entrySet();
반복자 반복자 = set.iterator();
System.out.println("정렬 전:");
while(iterator.hasNext()) {
Map.Entry me = (Map.Entry)iterator.next();
System.out.print(me.getKey() + ": ");
System.out.println(me.getValue());
}

지도 sortedMap = new TreeMap(hmap);

set2 설정 = sortedMap.entrySet();
반복자 반복자 반복자2 = set2.iterator();
System.out.println("정렬 후:");
while(반복자2.hasNext()) {
Map.Entry me2 = (Map.Entry)반복자2.다음();
System.out.print(me2.getKey() + ": ");
System.out.println(me2.getValue());
}
}
}
출력:

정렬 전: 
3: three
2: two
1: one
4: four
정렬 후:
1: one
2: two
3: three
4: four

2- Comparator 또는 Comparable

인터페이스를 <구현하는 목록에 키를 복사하여 Map을 정렬할 수도 있습니다. " 택배 New" , " 택배" , 미니밴;" >java.util.List을 호출한 다음 Collections.sort()입니다. 여기에서 두 정렬 인터페이스를 모두 사용할 수 있습니다 : Comparator 또는 비교 가능  을 클릭하고 표시할 오름차순 또는 내림차순을 선택합니다. 키 목록이 생성되면 키와 값을 새 HashMap에 복사할 수 있습니다.

import java.util.Collections; 
import java.util.Comparator;
가져 오기 java.util.HashMap;
import java.util.LinkedHashMap을 사용합니다.
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

public class Triclés {

public static HashMap< 문자열, 문자열> sortHashMap(지도< 문자열, 문자열> hmap){
목록< Map.Entry를 사용합니다< 문자열, 문자열> > 목록 =
새 LinkedList< Map.Entry를 사용합니다< 문자열, 문자열> > ( hmap.entrySet() );
Collections.sort( 목록, 새 비교기< Map.Entry를 사용합니다< 문자열, 문자열> > (){
public int compare
(Map.Entry< 문자열, 문자열> o1, Map.Entry< 문자열, 문자열> o2 )
{
//두 키 비교
return (o1.getKey()).compareTo( o2.getKey() );
}
});

//LinkedList
HashMap에서 새 HashMap을 만듭니다< 문자열, 문자열> hmapTriee = 새로운 LinkedHashMap< 문자열, 문자열> ();
for (Map.Entry< 문자열, 문자열> entry : list)
{
hmapTriee.put( entry.getKey(), entry.getValue() );
}
hmapTriee를 반환합니다.
}

public static void main(String[] args) {

final HashMap< 문자열, 문자열> hmap = 새로운 HashMap< 문자열, 문자열> ();

hmap.put("4", "4");
hmap.put("2", "2");
hmap.put("3", "3");
hmap.put("1", "하나");

System.out.println("정렬 전: "+ hmap);

System.out.println("정렬 후: "+sortHashMap(hmap));
}
}
출력:

정렬 전: {3=3, 2=2, 1=1, 4=4}
정렬 후: {1=1, 2=2, 3=3, 4=4}