728x90
반응형
HashMap 정렬하기
TreeMap을 사용하면 데이터를 저장할 때 키(key)로 자동 정렬을 해주지만 HashMap은 정렬하는 방법을 이용해야 합니다.
HashMap을 정렬하기 위해 java.util.Arrays - Arrays.sort 메서드를 사용해야 합니다.
HashMap 키(key) 기준으로 정렬
import java.util.Map;
import java.util.HashMap;
import java.util.Arrays;
public class Main {
public static void main(String[] args){
Map<Integer, String> animalMap = new hashMap<Integer, String>();
animalMap.put(3, "monkey");
animalMap.put(1, "tiger");
animalMap.put(5, "giraffe");
animalMap.put(2, "rabbit");
animalMap.put(4, "deer");
// 키(key) 값 기준으로 정렬하기
Object[] mapKey = animalMap.keySet().toArray();
Arrays.sort(mapKey);
// 결과 출력하기
for(Integer keyVal : animalMap.keySet()) {
System.out.println(animalMap.get(keyVal));
}
/*
결과
tiger
rabbit
monkey
deer
giraffe
*/
}
}
HashMap 값(value) 기준으로 정렬 (오름차순 / 내림차순)
import java.util.Map;
import java.util.Map.Entry;
import java.util.HashMap;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
Map<Integer, String> animalMap = new hashMap<Integer, String>();
animalMap.put(3, "monkey");
animalMap.put(1, "tiger");
animalMap.put(5, "giraffe");
animalMap.put(2, "rabbit");
animalMap.put(4, "deer");
// Map.Entry 리스트
List<Entry<String, Integer>> entryList = new ArrayList<Entry<String, Integer>>(animalMap.entrySet());
// Comparator를 사용하여 정렬
Collections.sort(entryList, new Comparator<Entry<String, Integer>>() {
// 값 비교
public int compare(Entry<String, Integer> obj1, Entry<String, Integer> obj2) {
// 오름차순 정렬
return obj1.getValue().compareTo(obj2.getValue());
// 내림차순 정렬
// return obj2.getValue().compareTo(obj1.getValue());
}
});
// 결과 출력
for(Entry<String, Integer> entry : entryList) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
/*
결과 (오름차순)
tiger : 1
rabbit : 2
monkey : 3
deer : 4
giraffe : 5
*/
}
}
값 기준으로 정렬할 때에는 비교 함수인 compareTo를 사용하여 정렬하였습니다.
감사합니다.
728x90
반응형
'Programming > Java' 카테고리의 다른 글
[Java] 상속을 사용하는 이유는 무엇일까? (2) | 2021.07.16 |
---|---|
[Java] 자료구조 - 우선순위 큐(Priority Queue) & 힙(heap) 이란 무엇인가? (0) | 2021.05.28 |
[Java] 현재 실행 중인 클래스/메서드 이름 추출하는 방법 (0) | 2021.05.10 |
[Java] 문자열 분해(배열로 변환) toCharArray(), new String() 사용법 & 예제 (0) | 2021.05.07 |
[Java] 자료구조 - 큐(Queue)란 무엇인가? (큐 개념 / 연산) (0) | 2021.05.04 |