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 |