Map - 컬렉션 프레임워크 - Map 소개 1

2024. 6. 17. 06:01김영한 Java/컬렉션 프레임워크

Map은 키-값의 쌍을 저장하는 자료 구조이다.

  • 키는 맵 내에서 유일해야 한다. 그리고 키를 통해 값을 빠르게 검색할 수 있다.
  • 키는 중복될 수 없지만, 값은 중복될 수 있다.
  • Map은 순서를 유지하지 않는다.

자바는 HashMap, TreeMap, LinkedHashMap등 다양한 Map 구현체를 제공한다. 이들은 Map 인터페이스의 메서드를 구현하며, 각기 다른 특성과 성능 특징을 가지고 있다.

 

 

 

 

package collection.Map;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapMain1 {
    public static void main(String[] args) {
        Map<String, Integer> studentMap = new HashMap<>();

        //학생 성적 데이터 추가
        studentMap.put("studentA",90);
        studentMap.put("studentB",80);
        studentMap.put("studentC",80);
        studentMap.put("studentD",100);
        System.out.println(studentMap);

        //특정 학생의 값 조회
        Integer result = studentMap.get("studentD");
        System.out.println("result = " + result);

        System.out.println("KeySet 활용");
        Set<String> keySet = studentMap.keySet(); //set자료구조로 반환
        for (String key : keySet) {
            Integer value = studentMap.get(key);
            System.out.println("key : " + key + " value : " + value);
        }

        System.out.println("entrySet 활용");
        Set<Map.Entry<String, Integer>> entries = studentMap.entrySet();
        for (Map.Entry<String, Integer> entry : entries) {
            String key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println("key = " + key + " value = " + value);
        }

        System.out.println("values 활용");
        Collection<Integer> values = studentMap.values();
        for (Integer value : values) {
            System.out.println("values = " + value);
        }
    }
}

 

키 목록 조회 

        Set<String> keySet = studentMap.keySet(); //set자료구조로 반환

Map의 키는 중복을 허용하지 않는다. 따라서 Map의 모든 키 목록을 조회하는 KeySet()을 호출하면, 중복을 허용하지 않는 자료구조인 Set을 반환한다.

 

키와 값 목록 조회

Map은 키와 값을 보관하는 자료 구조이다. 따라서 키와 값을 하나로 묶을 수 있는 방법이 필요하다. 이때 Entry를 사용한다.

Entry는 키-값의 쌍으로 이루어진 간단한 객체이다. Entry는 Map 내부에서 키와 값을 함께 묶어서 저장할 때 사용한다.

쉽게 이야기해서 우리가 Map에 키와 값으로 데이터를 저장하면 Map 내부에서 키와 값을 하나로 묶는 Entry 객체를 만들어서 보관한다. 참고로 하나의 Map에 여러 Entry가 저장될 수 있다.

참고로 Entry는 Map 내부에 있는 인터페이스이다. 우리는 구현체보다는 이 인터페이스를 사용하면 된다.

 

값 목록 조회

        Collection<Integer> values = studentMap.values();

Map의 값 목록은 중복을 허용한다. 따라서 중복을 허용하지 않는 Set으로는 반환할 수 없다. 그리고 입력 순서를 보장하지 않기 때문에 순서를 보장하는 List로 반환하기도 애매하다. 따라서 단순히 값의 모음이라는 의미의 상위 인터페이스인 Collection으로 반환한다.