판봉 개발 일기

Map 컬렉션 본문

자바 복습

Map 컬렉션

판봉 2021. 7. 13. 18:28
728x90

Map 컬렉션키(key)값(value)으로 구성된 Map.Entry 객체를 구성하는 구조를 가지고 있다.

여기서 말하는 Entry란 Map 인터페이스 내부에 선언된 중첩 인터페이스이다.

※여기서 키와 값은 모두 객체이다.

 

Map 컬렉션에서 키는 중복저장이 불가능 하지만 값은 중복 저장이 가능하다.

따라서, 동일한 키로 값을 저장하면 새로운 값으로 저장이된다.

 

Map 컬렉션에는 HashMap, Hashtable, LinkedHashMap, Properties, TreeMap 등이 있다.

  • HashMap
  • Hashtable
  • LinkedHashMap
  • Properties
  • TreeMap

다음은 Map 컬렉션에서 공통적으로 사용이 가능한 Map 인터페이스의 메소드들을 나타낸 것이다.

※ 키로 객체들을 관리하기 때문에 키를 매개값으로 갖는 메소드가 많은편이다.

기능 메소드 설명
객체 추가 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를 삭제하고 값을 리턴

Map 컬렉션들이라 메소드 앞에 Set이 붙어있는것들을 유의해야할듯 하다.


저장된 전체 객체를 하나씩 얻고 싶을 경우에는 2가지 방법을 사용할 수 있다.

  1. keySet() 메소드로 모든 키를 Set컬렉션으로 얻은 다음, 반복자를 통해 키를 하나씩 얻고 get()메소드를 통해 값을 얻는 방법
  2. entrySet()메소드로 모든 Map.Entry를 Set컬렉션으로 얻은 다음, 반복자를 통해 Map.Entry를 하나씩 얻고, getKey()와 getValue() 메소드를 이용해 키와 값을 얻는 방법

먼저 첫번째 방법을 알아보자

Map<K, V> map = …;
Set<K> KeySet = map.keySet();
Iterator<K> keyIterator = keySet.iterator();
while(keyIterator.hasNext()) {
	K key = keyIterator.next();
    V value = map.get(key);
}

그리고 두번째 방법을 알아보자

Set<Map.Entry<K, V>> entrySet = map.entrySet();
Iterator<Map.Entry<K, V>> entryIterator = entrySet.iterator();
while(entryIterator.hasNext()) {
	Map.Entry<K, V> entry = entryIterator.next();
    K key = entry.getKey();
    V value = entry.getValue();
}