Java - 컬렉션 프레임워크#3

이새봄·2022년 9월 7일

Java

목록 보기
10/11

이 글은 이것이 자바다를 참고하여 작성되었습니다.

Map 컬렉션

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

  • 키와 값은 모두 객체이다.
  • 키는 중복 저장될 수 없지만 값은 중복 저장될 수 있다.
    기존에 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 대치된다.
  • 키로 객체들을 관리한다.
    • put() 메소드 : 객체 추가
    • get() 메소드 : 키로 객체를 찾아옴
    • remove() 메소드 : 객체 삭제

저장된 전체 객체를 대상으로 하나씩 얻고 싶을 경우
1. keySet() 메소드로 모든 키를 Set컬렉션으로 만든 다음 반복자를 통해 키를 하나씩 얻고 get() 메소드를 통해 값을 얻는다.

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);
}
  1. entrySet() 메소드로 모든 Map.Entry를 Set 컬렉션으로 얻은 다음 반복자를 통해 Map.Entry를 하나씩 얻고 getKey()와 getValue() 메소드를 이용해 키와 값을 얻으면 된다.
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();
}

HashMap

: Map 인터페이스를 구현한 대표적인 Map 컬렉션.

  • HashMap의 키로 사용할 객체는 hashCode()와 equals() 메소드를 재정의해서 동등 객체가 될 조건을 정해야 한다.
  • HashMap 생성 : 키 타입과 값 타입을 파라미터로 주고 기본 생성자 호출
    Map<K, V> map = new HashMap<K, V>();
  • 키와 값의 타입은 기본 타입을 사용할 수 없고 클래스 및 인터페이스 타입만 가능하다.
  • hashCode()와 equals() 메소드 재정의 필요

Hashtable

: HashMap과 동일한 내부 구조를 가지고 있다.

  • 키로 사용할 객체는 hashCode()와 equals() 메소드를 재정의해서 동등 객체가 될 조건을 정해야 한다.
  • HashMap과의 차이점은 동기화된 메소드로 구성되어 있기 때문에 하나의 스레드가 실행을 완료해야만 다른 스레드를 실행할 수 있다. 이것을 스레드가 안전하다고 말한다.
  • Hashtable 생성 : 키 타입과 값 타입을 파라미터로 주고 기본 생성자 호출
    Map<K, V> map = new Hashtable<K, V>();

Properties

: Hashtable의 하위 클래스이기 때문에 Hashtable의 모든 특징을 그대로 가지고 있다.

  • Hashtable vs Properties
    • Hashtable : 키와 값을 다양한 타입으로 지정 가능
    • Properties : 키와 값을 String 타입으로 제한한 컬렉션
  • 애플리케이션의 옵션 정보, 데이터베이스 연결 정보 그리고 국제화(다국어) 정보가 저장된 프로퍼티 파일을 읽을 때 주로 사용한다.

0개의 댓글