Map

조상원·2025년 8월 2일

JAVA

목록 보기
25/34
  • 키(key)와 값(value)으로 구성된 Entry 객체를 저장하는 구조를 가지고 있다.
  • 키(key)와 값(value) 모두 객체이다.
  • 키(key)는 중복 저장을 허용하지 않고
  • 값(value)은 중복 저장이 가능하다.
리턴 타입메소드설명
Vput(K key, V value)주어진 키와 값을 추가, 저장이 되면 값을 리턴한다.
booleancontainsKey(Object key)주어진 키가 있는지 확인하여 결과 리턴한다.
booleancontainsValue(Object value)주어진 값이 있는지 확인하여 결과 리턴한다.
Set<Map.Entry<K,V>>entrySet()키와 값의 쌍으로 구성된 모든 Map.Entry 객체를 set에 담아서 리턴한다.
Vget(Object key)주어진 키의 값을 리턴한다.
booleanisEmpty()컬렉션이 비어있는지 조사한다.
SetkeySet()모든 키를 Set 객체에 담아서 리턴한다.
intsize()저장된 키의 수를 리턴한다.
Collectionvalues()저장된 모든 값을 Collection에 담아서 리턴한다.
voidclear()모든 Map.Entry를 삭제한다.
Vremove(Object key)주어진 키와 일치하는 Map.Entry 삭제, 삭제가 되면 값을 리턴한다.

HashMap

  • Map 인터페이스의 구현 클래스이다.
  • 키로 사용할 객체는 hashCode()와 equals() 메소드를 재정의해야 한다.
  • 대부분의 경우에 키값은 hashCode()와 equals()가 재정의된 String을 주로 사용한다.
  • put() 메소드는 entry 객체를 저장하는 메소드이다
  • get() 메소드는 key에 해당하는 value를 얻어오는 메소드이다
  • remove() 메소드는 key에 해당하는 entry 객체를 삭제하는 메소드이다
  • clear() 메소드는 모든 entry 객체를 삭제하는 메소드이다.
  • map은 인덱스의 개념이 없어서 반복문 사용 불가
  • Map은 Iterable 인터페이스를 구현하지 않아서 향상된 for문을 사용할 수 없다.
  • List와 Map 구조가 달라서 ArrayList에 담아서 사용할 수 없다
// 1. keySet() 메소드를 이용하는 방법
//      - Map 컬렉션에 있는  키값들만 Set 컬렉션에 담아서 반환한다
Set<String> set = map.keySet();
for (String key : set){
    System.out.printf("key : %s, value : %s\n", key, map.get(key));
}
set.forEach(key -> System.out.printf("key : %s, value : %s\n", key, map.get(key)));
// 2. entrySet() 메소드를 이용하는 방법
//      - Map 컬렉션에 있는 Entry 객체들 Set 컬렉션에 담아서 반환한다
Set<Map.Entry<String, Snack>> entrySet = map.entrySet();
for(Map.Entry<String, Snack> entry : entrySet){
     System.out.printf("key : %s, value : %s\n",entry.getKey(),entry.getValue());
        }

HashTable

  • Map 인터페이스의 구현 클래스이다.
  • HashMap과 차이점은 동기화(Synchronized)를 제공한다.
  • 멀티 스레드 환경에서 안전하게 객체를 추가, 삭제할 수 있는 것을 스레드가 안전(Thread Safe)하다고 한다.

0개의 댓글