SeouliteLab

[Java/자바] HashMap 정렬, 4가지 방법 본문

프로그래밍

[Java/자바] HashMap 정렬, 4가지 방법

Seoulite Lab 2024. 3. 8. 09:06

예제 1: TreeMap을 사용하여 키(Key)로 정렬

HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 50);
map.put("banana", 30);
map.put("orange", 40);
map.put("grape", 20);

TreeMap<String, Integer> sortedMap = new TreeMap<>(map);
System.out.println(sortedMap);

`TreeMap`을 사용하여 HashMap을 키(Key)로 정렬하는 예제입니다. TreeMap은 키의 자연 순서에 따라 정렬됩니다.

예제 2: Comparator를 사용하여 값(Value)로 정렬

HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 50);
map.put("banana", 30);
map.put("orange", 40);
map.put("grape", 20);

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

System.out.println(list);

Comparator를 사용하여 HashMap을 값(Value)으로 정렬하는 예제입니다. `entrySet()` 메서드를 사용하여 Map.Entry 객체를 리스트에 추가한 후, `comparingByValue()`로 값을 비교하여 정렬합니다.

예제 3: HashMap을 Stream API를 사용하여 키(Key)로 정렬

HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 50);
map.put("banana", 30);
map.put("orange", 40);
map.put("grape", 20);

Map<String, Integer> sortedMap = map.entrySet().stream()
        .sorted(Map.Entry.comparingByKey())
        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                (oldValue, newValue) -> oldValue, LinkedHashMap::new));

System.out.println(sortedMap);

Stream API를 사용하여 HashMap을 키(Key)로 정렬하는 예제입니다. `sorted()` 메서드를 사용하여 키로 정렬한 후, `collect()` 메서드를 사용하여 LinkedHashMap에 매핑합니다.

예제 4: Apache Commons Collections 라이브러리 사용

HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 50);
map.put("banana", 30);
map.put("orange", 40);
map.put("grape", 20);

Map<String, Integer> sortedMap = MapUtils.sortMap(map, Comparator.naturalOrder());

System.out.println(sortedMap);

Apache Commons Collections 라이브러리의 `MapUtils.sortMap()` 메서드를 사용하여 HashMap을 정렬하는 예제입니다. `Comparator.naturalOrder()`를 사용하여 키로 정렬합니다.