본문 바로가기
웹 개발/java

[java] Map 특징 + 사용법

by dani0312 2024. 2. 16.

📌Map 알아보기

◾Map이란

자바에서 Map은 키와 값을 쌍으로 저장하는 자료구조를 나타낸다.

인터페이스를 구현하는 클래스로는 대표적으로 HashMap, TreeMap, LinkedHashMap 등이 있다.

 

 

◾Map 특징

- Map 인터페이스를 구현한 클래스들은 키와 값을 하나의 쌍으로 저장하는 방식을 사용한다. 

- 요소의 저장 순서를 유지하지 않는다. 

- key는 중복을 허용하지 않고, value는 중복을 허용한다.

- 동일한 key값으로 넣을 시 최근에 넣은 값이 적용된다.

💡HashMap은 저장 순서를 유지하지 않으나, LinkedHashMap은 저장된 순서를 유지한다. 순서가 중요한 경우에는 LinkedHashMap을 사용하는 것이 좋다.

 

 

◾Map(HashMap) 사용하기

본 글에서는 가장 많이 사용되는 HashMap을 기준으로 Map의 사용법에 대해 알아볼 것이다.

 

1. 선언과 생성하기

Map<KeyType, ValueType> map = new HashMap<>();

        Map<Integer,String> map = new HashMap<>();

 

 

2. 데이터 추가하기

map.put(key,value);

        map.put(1,"lala");
        map.put(3,"pingping");

 

 

3. 값 얻기

map.get(key);

        map.get(1);
        // 값 출력하기
        System.out.println("map.get(1) = " + map.get(1));

        // 변수에 값 저장하기(value의 type에 맞게 꺼내야 한다.)
        String value = map.get(1);

 

 

4. 데이터 삭제하기

map.remove(key);

	map.remove(1);

 

 

5. 데이터 개수 확인하기

map.size();

	int size = map.size(); //int형 반환

 

 

6. 데이터 존재 여부 확인하기

   6-1. 키 값 존재 여부 확인

   containsKey(key);

        boolean containsKey = map.containsKey(4); 
        System.out.println("containsKey = " + containsKey);

키 값 중에 '4'라는 값이 존재하는지 알고 싶다면 containsKey() 메서드를 이용할 수 있다. boolean값으로 반환되어 key값의 존재 유무를 알려준다.

 

 

    6-2. 값 존재 여부 확인

    containsValue(value);

	boolean containsValue = map.containsValue("roro"); 
	System.out.println("containsValue = " + containsValue);

containsKey()사용법과 동일하다. key대신 value값이 map에 존재하는지 확인하고 싶을 때 사용한다.

 

 

7. 모든 키 또는 값 순회

   7-1. 키에 대한 작업 수행

   for (KeyType key : map.keySet()) {...}

        for (Integer key : map.keySet()) {
        // 활용 예시
            map.get(key); //key로 value조회
            boolean equal = key.equals(1); //특정 key값과 일치 여부 확인
        }

💡keySet은 Set으로 반환된다. Set<Integer> keySet = map.keySet();

 

 

   7-2 값에 대한 작업 수행

   for (ValueType value : map.values()) {...}

        for (String value : map.values()) {
        // 활용 예시
            System.out.println("value = " + value);
            boolean equal = value.equals("ping"); //특정 value값과 일치 여부 확인
        }

💡map.values()는 Collection으로 반환된다. Collection<String> collection = map.values();

 

 

   7-3 키와 값에 대한 작업 수행

   for (Map.Entry<KeyType, ValueType> entry : map.entrySet()) {...}

        for (String value : map.values()) {
            Integer key = entry.getKey();
            String value = entry.getValue();
            System.out.println("key="+key+" / value="+value);
        }

 

 

8. 전체 데이터 조회하기

출력메서드(map);

        System.out.println(map); //{1=lala, 3=pingping}

결과: {key1=value1,key2=value2,...}

 

 

 

 


Reference

java 공식문서 map

https://docs.oracle.com/javase/8/docs/api/java/util/Map.html

 

 

 

 

 

 


/* 내가 추가한 코드 */ /* 내가 추가한 코드 끝끝 */