Map에서 Key 정렬은 TreeMap을 사용하면 된다.
Map<Integer, String> map = new TreeMap<>();
map.put(3, "kim");
map.put(1, "lee");
map.put(2, "choi");
// key가 1, 2, 3으로 자동 정렬된다.
내림차순 정렬 시 Collections.reverseOrder()을 넣으면 된다.
Map<Integer, String> map = new TreeMap<>(Collections.reverseOrder());
map.put(3, "kim");
map.put(1, "lee");
map.put(2, "choi");
// key가 3, 2, 1 순서로 자동 정렬된다.
TreeMap에서 자주 사용되는 메서드
TreeMap<Integer, String> map = new TreeMap<>();
map.put(1, "Data1");
map.put(2, "Data2");
map.put(3, "Data3");
map.put(4, "Data4");
map.put(5, "Data5");
map.firstKey() : 가장 작은 키(1) 반환
map.lastKey() : 가장 큰 키(5) 반환
map.higherKey(2) : 2보다 큰 최소 키(3) 반환
map.lowerKey(2) : 2보다 작은 최대 키(1) 반환
map.subMap(2, 4); // 2, 3만 포함된 Map 반환
map.headMap(3); // 1, 2만 포함된 Map 반환
map.tailMap(3); // 3, 4, 5가 포함된 Map 반환
Map에서 Value 정렬은 TreeMap으로 불가능하기 때문에 Stream API를 사용해야 한다.
Map<String, Integer> map = new HashMap<>();
map.put("A", 50);
map.put("B", 10);
map.put("C", 30);
1. 스트림을 사용하여 값 기준 오름차순 정렬 후 출력
map.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
.forEach(entry -> System.out.println(entry.getKey() + " : " + entry.getValue()));
2. 만약 정렬된 결과를 다시 Map에 담고 싶을 경우 LinkedHashMap으로 해결한다.
LinkedHashMap<String, Integer> sortedMap =
map.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue())
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(e1, e2) -> e1,
LinkedHashMap::new // 순서 유지를 위해 반드시 필요
));'Java & Spring' 카테고리의 다른 글
| QueryDSL (0) | 2026.04.30 |
|---|---|
| [Spring] JPA 6 (0) | 2026.03.16 |
| [Spring] ResponseEntity (0) | 2026.02.22 |
| [Servlet] WebSocket (0) | 2026.02.16 |
| [Spring] Security (0) | 2026.02.15 |