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}