본문 바로가기

개발

Java - HashMap과 Hashtable

반응형

HashMap과 Hashtable - 순서 X, 중복(키 X, 값 O)
 - Map 인터페이스를 구현. 데이터를 키와 값의 쌍으로 저장 
 - HashMap은 동기화 x Hashtable은 동기화 o
 - HashMap은 Hashtable의 신버전

HashMap
 - Map 인터페이스를 구현한 대표적인 컬렉션 클래스
 - 순서 유지하려면 LinkedHashMap클래스를 사용
 - 해싱 기법으로 데이터 저장, 데이터가 많아도 검색이 빠르다.

TreeMap
 - 범위 검색과 정렬에 유리한 컬렉션 클래스 
 - HashMap 보다 데이터 추가, 삭제에 시간이 더 걸림

해싱(Hashing)
- 해시 함수로 해시테이블에 데이터를 저장 검색
- 해시 테이블은 배열과 링크드리스트가 조합된 형태
   링크드 리스트 > 변경하기 쉽게
   배열 > 접근성좋다 
  >> 접근성과 변경에 유리하다.

 해시테이블에 저장된 데이터를 가져오는 과정 
 1. 키로 해시함수를 호출해서 해시코드를 얻는다.
 2. 해시코드(해시함수의 반환값)에 대응하는 링크드리스트를 배열에서 찾는다.
 3. 링크드리스트에서 키와 일치하는 데이터를 찾는다.
   ** 해시함수는 같은 키에 대해 항상 같은 해시코드를 반환해야한다. 
       서로 다른 키 일지라도 같은 값의 해시코드를 반환할 수도 있다. 

HashMap 주요 메서드
 - HashMap()
    HashMap(int initialCapacity)
    HashMap(int initialCapacity, float loadFactor)
    HashMap(Map m)
 - Object Put(Object key, Object value)
 - void putAll(Map m)
 - Object remove(Object key)
 - Object replace(Object key, Object value)
 - boolean replace(Object key, Object oldValue, Object newValue) : 변경 
 - Set entrySet() : 엔트리(키, 벨류)를 Set으로 가져온다.
 - Set keySet() : 키를 Set으로 가져온다.
 - Collection values() : 값을 Collection으로 가져온다.
 - Object get(Object key)  
 - Object getOrDefault(Object key, Object defaultValue)
 - boolean containsKey(Object key)
 - boolean containsValue(Object value)

반응형

'개발' 카테고리의 다른 글

Java - Generics 란  (0) 2021.06.26
Java - Collections의 유용한 static 메서드  (0) 2021.06.06
Java - TreeSet  (0) 2021.06.06
Java - HashSet  (0) 2021.06.06
Java - Comparator와 Comparable  (0) 2021.06.06