[Java] HashMap Key(키)/Value(밸류) 기준 정렬

18803 단어 JavaJava

키(Key) 기준 정렬

HashMap을 Key로 정렬하기 위해서는 Arrays.sort 메소드를 사용한다.
Arrays.sort 사용하기 위해서 java.util.Arrays를 import 해줘야 한다.

        // key 값 기준 정렬
        HashMap<Integer, Integer> map = new HashMap<>();

        map.put(6, 1);
        map.put(1, 2);
        map.put(4, 3);
        map.put(10, 4);
        map.put(7, 5);


        Object[] mapKey = map.keySet().toArray();
        Arrays.sort(mapKey);

        System.out.println("오름차순 정렬");
        for (Integer key : map.keySet()) {
            System.out.println(key + " : " + map.get(key));
        }

map 에 키를 6,1,4,10,7 순서로 데이터를 추가한다.
Object 클래스를 선언하고 mapKey에 key를 저장한다.
키만 추출한 Object 클래스인 변수 mapKey를 Arrays.sort 사용하여 정렬한다.
keySet()을 반복문 돌려 출력한다.

(결과)

오름차순 정렬
1 : 2
4 : 3
6 : 1
7 : 5
10 : 4

Value 기준 정렬

HashMap을 Value로 정렬하기 위해서는 compareTo를 사용한다.

        // value 값 기준 정렬

        HashMap<Integer, Integer> map2 = new HashMap<>();

        map2.put(1, 5);
        map2.put(2, 0);
        map2.put(3, 3);
        map2.put(4, 9);
        map2.put(5, 6);

        List<Map.Entry<Integer,Integer>> list = new ArrayList<Map.Entry<Integer,Integer>>(map2.entrySet());

        Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() {
            @Override
            public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {
                return o1.getValue().compareTo(o2.getValue()); // 오름차순
                // return o2.getValue().compareTo(o1.getValue()); // 내림차순
            }
        });

        for(Map.Entry<Integer, Integer> entry : list){
            System.out.println(entry.getKey()+" "+entry.getValue());
        }

(결과)

오름차순 정렬
2 0
3 3
1 5
5 6
4 9

HashMap에 저장된 데이터 값을 Comparator 함수를 사용하여 정렬한다.

TreeMap 자동 정렬

TreeMap은 Key를 기준으로 자동 정렬한다.

        // TreeMap  정렬
        TreeMap<Integer, Integer> tree = new TreeMap<>();

        tree.put(6, 1);
        tree.put(1, 2);
        tree.put(4, 3);
        tree.put(10, 4);
        tree.put(7, 5);


        System.out.println("오름차순 정렬");
        for (Integer key : tree.keySet()) {
            System.out.println(key + " : " + tree.get(key));
        }

(결과)

오름차순 정렬
1 : 2
4 : 3
6 : 1
7 : 5
10 : 4

https://ponyozzang.tistory.com/404

좋은 웹페이지 즐겨찾기