JAVA

[Java] HashMap Value 기준으로 정렬하기

퉁그리 2022. 1. 13. 02:23

map에서 treemap은 key값으로만 정렬해주기 때문에 value를 정렬하려면 list를 이용해야한다.

 

map의 entry set을 이용해 list화 한다.

 

Map<String, Integer> map = new HashMap<>();

map.put("a", 3);
map.put("b", 2);
map.put("c", 1);

List<Map.Entry<String, Integer>> entries = new ArrayList<>(map.entrySet());

 

다음 entry의 sort함수와 comparator, tocompare를 사용해 간단하게 비교가 가능하다.

 

entries.sort((v1, v2) -> v1.getValue().compareTo(v2.getValue()));
Map<Integer, Double> result = new HashMap<>();

for (int i = 0; i < COUNT5_CHAMP_LIMIT; i++) {
    result.put(entries.get(i).getKey(), entries.get(i).getValue());
}

나의 경우 entries를 comparTo를 통해 최저값 5개만 골라 다시 map으로 변환해줬다.