른록노트

[Java] HashMap 값으로 정렬하는 방법 본문

Programming/[Java]

[Java] HashMap 값으로 정렬하는 방법

른록 2021. 6. 17. 11:49

참고사이트

[JAVA] Map에서 데이터를 값(Value)기준으로 정렬방법 (오름차순, 내림차순)

소스코드

간단하게 바로 사용하는 방법

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Iterator;

public class ArraySort {

    public static void main(String[] args) {
        Map<String, Integer> hashMap = new HashMap<>();

        hashMap.put("A", 5);
        hashMap.put("B", 1);
        hashMap.put("C", 2);
        hashMap.put("D", 4);
        hashMap.put("E", 3);

        List<String> listKeySet = new ArrayList<>(hashMap.keySet());

        // 오름차순
        Collections.sort(listKeySet, (value1, value2) -> (hashMap.get(value1).compareTo(hashMap.get(value2))));
        for(String key : listKeySet) {
            System.out.println("key : " + key + " , " + "value : " + hashMap.get(key));
        }

        Iterator iter = listKeySet.iterator();
        while(iter.hasNext()){
          String key = (String) iter.next();
          System.out.println("key : " + key + " , " + "value : " + hashMap.get(key));
        }

        System.out.println("------------------------");

        // 내림차순
        Collections.sort(listKeySet, (value1, value2) -> (hashMap.get(value2).compareTo(hashMap.get(value1))));
        for(String key : listKeySet) {
            System.out.println("key : " + key + " , " + "value : " + hashMap.get(key));
        }
    }
}

함수로 만들어서 사용하는 방법

    private ArrayList sortByValue(final Map map, String order) {
        ArrayList<Object> keyList = new ArrayList();
        keyList.addAll(map.keySet());

        Collections.sort(keyList, new Comparator() {
            public int compare(Object o1, Object o2) {
                Object v1 = null;
                Object v2 = null;

                if("asc".equals(order)) {
                    v1 = map.get(o1);
                    v2 = map.get(o2);
                }else if("desc".equals(order)) {
                    v1 = map.get(o2);
                    v2 = map.get(o1);
                }

                return ((Comparable) v1).compareTo(v2);
            }
        });

        return keyList;
    }
    private ArrayList sortByValue(final Map map, String order) {
        ArrayList<Object> keyList = new ArrayList();
        keyList.addAll(map.keySet());

        Collections.sort(keyList, (o1,o2) -> {
                Object v1 = null;
                Object v2 = null;

                if("asc".equals(order)) {
                    v1 = map.get(o1);
                    v2 = map.get(o2);
                }else if("desc".equals(order)) {
                    v1 = map.get(o2);
                    v2 = map.get(o1);
                }

                return ((Comparable) v1).compareTo(v2);
        });

        return keyList;
    }
반응형
Comments