데이터는 key와 value로 구성된다.
Map 인터페이스를 구현한 클래스
HashMap 클래스
해시 테이블 알고리즘으로 구현된 클래스
해시 테이블 알고리즘에서 저장할 데이터의 해시(hash) 값을 계산할 때, hashCode 메소드를 사용한다
성능 : 평균 O(1), 최악 O(n)
TreeMap 클래스
Red Black Tree 알고리즘으로 구현된 클래스
SortMap 인터페이스를 구현되었다. 등록된 데이터 항목들이 key 순서대로 정렬된다.
성능: 평균 O(logn), 최악 O(logn)
HashMap vs HashSet
HashSet은 Set 인터페이스를 구현한 클래스. 중복허용안함
HashMap은 Map 인터페이스를 구현한 클래스. Key값은 중복허용안함 Value는 중복허용함.
HashMap은 unique key를 이용하여 데이터에 바로 접근하기에 HashSet에 비해서 빠르다.
HashMap vs HashTable
둘다 Map Interface를 상속받아 구현되었고 데이터를 키와 값으로 관리한다.
차이점은 동기화와 반환값이다.
동기화
HashMap은 동기화를 지원하지 않는다.
멀티 스레드 환경에서 HashTable은 동기화를 지원하기 때문에 실행환경에 따라 구분하여 사용하면 된다.
HashTable은 동기화 처리 비용때문에 HashMap에 비해 느리다.
반환값
HashMap은 Iterator를 반환한다.
HashTable은 Enumeration 반환한다. Enumeration은 컬렉션 프레임워크 이전에 사용되던 인터페이스로 Iterator의 사용 권장.
Map keySet vs EntrySet
EntrySet을 하면 한번에 key, value를 가져온다.
하지만 keySet은 key값으로 value값을 알아야하기 때문에 한번더 접근과정이 있기떄문에 비효율적이다.
'Java' 카테고리의 다른 글
IO (0) | 2020.01.31 |
---|---|
Array vs List (0) | 2020.01.15 |
Collection Framework (0) | 2020.01.15 |
다형성 (0) | 2020.01.15 |
배열 정렬 (0) | 2020.01.15 |