
Map은 키-값 쌍으로 데이터를 저장하는 자료구조로, 데이터를 효율적으로 검색하고 처리할 수 있는 강력한 도구입니다. 다양한 프로그래밍 언어에서 Map 타입을 제공하지만 이 글에서는 Java로 예시를 작성했습니다.
Map은 키-값 쌍으로 이루어진 컬렉션입니다. 각 키는 고유해야 하며, 이를 통해 값에 쉽게 접근할 수 있습니다. 예를 들어, 학생의 ID를 키로 하고 학생의 정보를 값으로 저장할 수 있습니다.
Map<Integer, String> studentMap = new HashMap<>();
// 키-값 데이터 삽입
studentMap.put(1, "Alice");
studentMap.put(2, "Bob");
Map은 데이터를 집계하는 데 유용합니다. 예를 들어, 주어진 데이터를 바탕으로 각 학생의 점수를 집계할 수 있습니다. 아래는 점수를 집계하는 간단한 예제입니다.
Map<String, Integer> scores = new HashMap<>();
scores.put("Alice", 85);
scores.put("Bob", 92);
// Alice의 점수 업데이트
scores.put("Alice", scores.get("Alice") + 5);
이 코드는 특정한 키의 값을 업데이트하여 데이터 집계를 쉽게 처리합니다.
Map을 사용하여 데이터를 그룹화할 수 있습니다. 예를 들어, 학생들을 학년별로 그룹화할 수 있습니다.
Map<String, List<String>> studentsByGrade = new HashMap<>();
studentsByGrade.put("1학년", new ArrayList<>());
studentsByGrade.get("1학년").add("Alice");
studentsByGrade.get("1학년").add("Bob");
이렇게 하면 특정 학년의 학생 목록을 쉽게 관리할 수 있습니다.
Map을 사용하여 조건에 맞는 데이터를 필터링할 수도 있습니다. 예를 들어, 특정 점수 이상인 학생을 찾는 작업을 수행할 수 있습니다.
Map<String, Integer> filteredScores = scores.entrySet().stream()
.filter(entry -> entry.getValue() >= 90)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
이 코드는 점수가 90점 이상인 학생만 필터링하여 새로운 Map에 저장합니다.
Map을 활용하여 데이터를 변환하는 작업도 가능합니다. 예를 들어, 학생의 이름을 대문자로 변환하는 작업을 수행할 수 있습니다.
Map<String, String> upperCaseNames = studentMap.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().toUpperCase()));
위 코드는 모든 학생의 이름을 대문자로 변환하여 새로운 Map에 저장합니다.