개발일지/Java

Java Map<key, value>, HashMap

E-room 2022. 9. 17. 17:22
728x90

Map

키(key)와 값(value)으로 구성된 객체(Entry)를 저장하는 구조

-> 키와 값으로 구성된 엔트리 객체가 모여있는 구조

  • 키는 중복 저장이 불가능하다 -> 값을 식별하기 위해
  • 값은 중복 저장이 가능하다
  • HashMap, Hashtable, TreeMap, SortedMap 등
기능 리턴 타입 메서드 설명
객체 추가 Object put
(Object key,
Object value)
주어진 키로 값을 저장합니다. 해당 키가 새로운 키일 경우 null을 리턴하지만, 동일한 키가 있을 경우에는 기존의 값을 대체하고 대체되기 이전의 값을 리턴합니다.
객체 검색 boolean containsKey
(Object key)
주어진 키가 있으면 true, 없으면 false를 리턴합니다.
boolean containsValue
(Object value)
주어진 값이 있으면 true, 없으면 false를 리턴합니다.
Set entrySet() 키와 값의 쌍으로 구성된 모든 Map.Entry 객체를 Set에 담아서 리턴합니다.
Object get(Object key) 주어진 키에 해당하는 값을 리턴합니다.
boolean isEmpty() 컬렉션이 비어 있는지 확인합니다.
Set keySet() 모든 키를 Set 객체에 담아서 리턴합니다.
int size() 저장된 Entry 객체의 총 갯수를 리턴합니다.
Collection values() 저장된 모든 값을 Collection에 담아서 리턴합니다.
객체 삭제 void clear() 모든 Map.Entry(키와 값)을 삭제합니다.
Object remove(Object key) 주어진 키와 일치하는 Map.Entry를 삭제하고 값을 리턴합니다.

HashMap

  • Map 인터페이스를 구현한 대표적인 클래스
  • '키'와 '값'으로 저장되는 위치가 결정되므로 사용자는 그 위치를 알 수 없으며, 삽입되는 순서와 위치 또한 관계가 없다
  • 많은 양의 데이터를 검색하는 데 특화
리턴 타입 메서드 설명
boolean equals(Object o) 동일한 Entry 객체인지 비교합니다.
Object getKey() Entry 객체의 Key 객체를 반환합니다.
Object getValue() Entry 객체의 Value 객체를 반환합니다.
int hashCode() Entry 객체의 해시코드를 반환합니다.
Object setValue(Object value) Entry 객체의 Value 객체를 인자로 전달한 value 객체로 바꿉니다.

 

HashMap을 사용할 때는 키와 값의 타입을 지정해주어야 한다

HashMap<String, Integer> hashmap = new HashMap<>();
import java.util.*;

public class Main {
    public static void main(String[] args) {

        // HashMap 생성
        HashMap<String, Integer> map = new HashMap<>();

        // Entry 객체 저장
        map.put("피카츄", 85);
        map.put("꼬부기", 95);
        map.put("야도란", 75);
        map.put("파이리", 65);
        map.put("피존투", 15);

        // 저장된 총 Entry 수 얻기
        System.out.println("총 entry 수: " + map.size());

        // 객체 찾기
        System.out.println("파이리 : " + map.get("파이리"));

        // key를 요소로 가지는 Set을 생성 -> 아래에서 순회하기 위해 필요합니다. 
        Set<String> keySet = map.keySet();

        // keySet을 순회하면서 value를 읽어옵니다. 
        Iterator<String> keyIterator = keySet.iterator();
        while (keyIterator.hasNext()) {
            String key = keyIterator.next();
            Integer value = map.get(key);
            System.out.println(key + " : " + value);
        }

        // 객체 삭제
        map.remove("피존투");

        System.out.println("총 entry 수: " + map.size());

        // Entry 객체를 요소로 가지는 Set을 생성 -> 아래에서 순회하기 위해 필요합니다. 
        Set<Map.Entry<String, Integer>> entrySet = map.entrySet();

        // entrySet을 순회하면서 value를 읽어옵니다. 
        Iterator<Map.Entry<String, Integer>> entryIterator = entrySet.iterator();
        while (entryIterator.hasNext()) {
            Map.Entry<String, Integer> entry = entryIterator.next();
            String key = entry.getKey(); // Map.Entry 인터페이스의 메서드
            Integer value = entry.getValue(); // Map.Entry 인터페이스의 메서드
            System.out.println(key + " : " + value);
        }

        // 객체 전체 삭제
        map.clear();
    }
}

 

728x90