기록하는 중/JAVA

[Java] Map 컬렉션

성장하는 요롱이 2024. 1. 17. 15:29
Map 컬렉션
  • 키와 값(key / value 둘 다 객체)으로 구성된 Map.entry 객체를 저장하는 구조
  • Entry는 Map인터페이스 내부에 선언된 중첩 인터페이스
  • 키는 중복 저장될 수 없음
  • 값은 중복 저장 가능
  • 만약 기존에 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 대체됨
  • HashMap, Hashtable, linkedHashMap, Properties, TreeMap
기능 메소드 설명
객체 추가 V put(K key, V value) 주어진 키로 값을 저장. 새로운 키일 경우 null을 리턴하고 동일한 키가 있을 경우 값을 대체하고 이전 값을 리턴
객체 검색 boolean containsKey(Object key) 주어진 키가 잇는지 여부를 확인
boolean containsValue(Object value) 주어진 값이 있는지 여부를 확인
Set<Map.Entry<K.V>> entrySet() 키와 값으리 쌍으로 구성된 모든 Map.Entry 객체를 Set에 담아서 리턴
V get(Object key) 주어진 키가 있는 값을 리턴
boolean isEmpty( ) 컬렉션이 비어 있는지 여부를 확인
Set<K> keySet( ) 모든 키를 Set 객체에 담아서 리턴
int size( ) 저장된 키의 총 수를 리턴
Collection<V> values( ) 저장된 모든 값을 Collection에 담아서 리턴
객체 삭제 void clear( ) 모든 Map.entry(키와 값)을 삭제
V remove(Object key) 주어진 키와 일치하는 Map.Entry를 삭제하고 값을 리턴

 

HashMap 클래스
  • HashMap의 키로 사용할 객체는 hashCode()와 equals() 메소드를 재정의해서 동등 객체가 될 조건을 정해야 함
  • 같은 키로 간주하고 중복 저장되지 않도록 하기 위함(hashCode()의 리턴값 동일, equals()메소드가 true 리턴)
  • 해싱을 이용하여 Map 인터페이스를 구현한 클래스

 

  Hashtable
  • hashMap과 동일한 내부 구조를 가짐
  • 키로 사용할 객체는 hashCode()와 equals() 메소드를 재정의해서 동등 객체가 될 조건을 정해야 함
  • 동기화된 메소드로 구성되어 있기 때문에 멀티 스레드가 동시에 Hashtable의 메소드들을 실행 할 수 없음
  • 하나의 스레드가 실행을 완료해야만 다른 스레드를 실행할 수 있음
  • 멀티 스레드 환경에서 안전하게 객체를 추가/삭제 할 수 있음  -  스레드에 안전

    Map<K, V> map = new HashMap<K, V>();
    
    Map<String, Integer> map = new HashMap<String, Integer>();
    Map<String, Integer> map = new HashMap<>()
    
    Map<String, Integer> map = new Hashtablep<String, Integer>();
    Map<String, Integer> map = new Hashtable<>()