이 글에서는 키(Key)를 기준으로 맵(Map)을 정렬하는 방법을 자세히 알아보겠습니다. Java의 Map 인터페이스인 java.util.Map은 키와 값 사이의 매핑(mapping) 관계를 나타냅니다. 좀 더 구체적으로 설명하면, Java Map은 키와 값으로 이루어진 쌍을 저장할 수 있으며, 각 키는 하나의 특정 값과 연결됩니다.
맵을 키 기준으로 정렬하는 가장 간단한 방법은 TreeMap을 활용하는 것입니다. TreeMap은 요소를 저장할 때 키를 오름차순(자연 순서)으로 자동 정렬해 주기 때문입니다.
아래에서 실제 동작 과정을 살펴보겠습니다.
입력값
입력 맵: {1=Scala, 2=Python, 3=Java}기대 출력 결과
키를 기준으로 정렬된 맵:
{1=Scala, 2=Python, 3=Java}알고리즘
Step 1 - 시작 Step 2 - 필요한 변수를 선언합니다. Step 3 - 값을 정의합니다. Step 4 - Map 구조를 생성하고 'put' 메서드를 사용해 값을 추가합니다. Step 5 - 문자열 타입의 TreeMap을 생성합니다. Step 6 - Map의 값들을 키를 기준으로 정렬하여 TreeMap에 저장합니다. Step 7 - 결과를 콘솔에 출력합니다. Step 8 - 종료
예제 1: main 함수에서 모든 작업 처리
아래 예제에서는 모든 연산을 'main' 함수 안에서 하나로 묶어 처리합니다.
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
public class Demo {
public static void main(String[] args) {
System.out.println("필요한 패키지가 임포트되었습니다");
Map<String, String> input_map = new HashMap<>();
input_map.put("1", "Scala");
input_map.put("3", "Java");
input_map.put("2", "Python");
System.out.println("정의된 맵: " + input_map);
TreeMap<String, String> result_map = new TreeMap<>(input_map);
System.out.println("\n키를 기준으로 정렬된 맵: \n" + result_map);
}
}출력 결과
필요한 패키지가 임포트되었습니다
정의된 맵: {1=Scala, 2=Python, 3=Java}
키를 기준으로 정렬된 맵:
{1=Scala, 2=Python, 3=Java}예제 2: 객체 지향 방식으로 함수 분리
아래 예제에서는 정렬 로직을 별도의 함수로 캡슐화하여 객체 지향 프로그래밍 스타일로 구현합니다.
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
public class Demo {
static void sort( Map<String, String> input_map){
TreeMap<String, String> result_map = new TreeMap<>(input_map);
System.out.println("\n키를 기준으로 정렬된 맵: \n" + result_map);
}
public static void main(String[] args) {
System.out.println("필요한 패키지가 임포트되었습니다");
Map<String, String> input_map = new HashMap<>();
input_map.put("1", "Scala");
input_map.put("3", "Java");
input_map.put("2", "Python");
System.out.println("정의된 맵: " + input_map);
sort(input_map);
}
}출력 결과
필요한 패키지가 임포트되었습니다
정의된 맵: {1=Scala, 2=Python, 3=Java}
키를 기준으로 정렬된 맵:
{1=Scala, 2=Python, 3=Java}