Post

Java Map을 Key, Value 기준 정렬

2024-11-28-java-map-sort.md

1. Key 기준 정렬

keySet을 이용하여 key 기준 정렬을 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MapTest {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("c", 3);
        map.put("b", 2);
        map.put("e", 5);
        map.put("a", 1);
        map.put("d", 4);

        List<String> keySetList = new ArrayList<>(map.keySet());

        Collections.sort(keySetList); // 오름차순
        for (String key : keySetList) {
            System.out.println(key + ":" + map.get(key));
        }

        Collections.reverse(keySetList); // 내림차순
        for (String key : keySetList) {
            System.out.println(key + ":" + map.get(key));
        }
    }
}

2. Value 기준 정렬

Comparator를 사용하여 Value 기준 정렬을 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MapTest {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("c", 4);
        map.put("b", 2);
        map.put("e", 3);
        map.put("a", 5);
        map.put("d", 1);

        List<String> keySetList = new ArrayList<>(map.keySet());

        // 오름차순
        keySetList.sort(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return map.get(o1).compareTo(map.get(o2));
            }
        });

        for (String key : keySetList) {
            System.out.println(key + ":" + map.get(key));
        }

        // 내림차순
        keySetList.sort((o1, o2) -> map.get(o2).compareTo(map.get(o1)));
        for (String key : keySetList) {
            System.out.println(key + ":" + map.get(key));
        }
    }
}

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.