기록하는 중/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<>()