HashMap

0

Collection

목록 보기
10/11

HashMap과 HashTable 순서 X, 중복(키X, 값O)

  • Map 인터페이스를 구현, 데이터를 키와 값의 쌍으로 저장

HashMap

  • Map인터페이스를 구현한 대표적인 컬렉션 클래스
  • 순서를 유지하려면, LinkedHashMap클래스를 사용하면 된다.

TreeMap

  • 범위 검색과 정렬에 유리한 컬렉션 클래스
  • HashMap보다 데이터 추가, 삭제에 시간이 더 걸림 (비교 저장)

HashMap의 키(key)와 값(value)

  • 해싱(hashing) 기법으로 데이터를 저장, 데이터가 많아도 검색이 빠르다.
  • Map인터페이스를 구현, 데이터를 키와 쌍으로 저장

키(key) : 컬렉션 내의 키 중에서 유일해야 한다.
값(value) : 키와 달리 데이터의 중복을 허용한다.

  • 중복된 key에 다른 값을 넣는다면(put) 값이 변경된다.
    키와 값의 묶음을 Entry 라고 한다.

해싱(Hashing)

key를 넣으면 index(저장위치)를 알려줌, 결과 값이 해쉬코드(배열의 인덱스)
해쉬함수를 이용해서 저장하고 읽어 오는것을 해싱이라 한다.

해시함수는 Object.hash() 메소드를 이용해서 작성하면 된다.

해쉬테이블에서 저장된 데이터를 가져오는 과정

  1. 키(key)를 입력
  2. 해쉬함수가 계산을 해서 해시코드를 반환(배열의 index)
  3. 해당 배열의 index로 가서 원하는 값이 나올때까지 검색

해쉬함수는 같은 키에 대해 항상 같은 해시코드를 반환해야 한다.
서로 다른 키일지라도 같은 값의 해시코드를 반환할 수도 있다.

HashMap 주요메서드

생성자
HashMap()
HashMap(int initialCapacitiy) // 초기용량 설정
HashMap(int initialCapacity, float loadFactor)
HashMap(Map m) // 다른 맵을 해시맵으로 바꿀 수 있음

링크드리스트의 특성을 가지고 있음
Object put(Object key, Object value)
void putAll(Map m)
Object remove(Obejct key)
Object replace(Object key, Object value) // 변경, 기존의 지정된 키를 새로운 값으로 저장
boolean replace(Object key, Object oldValue, Object newValue)
// 변경, 기존의 지정된 키를 새로운 값으로 저장

읽어오는 메서드
Set entrySet() // 키와 값을 가진 set를 생성
Set keySet() // key값만 가져옴
Collection values() // 값만 가져옴

Object get(Object key) // key에 해당하는 value 반환
Object getOrDefault(Object key, Object defaultValue) // key가 없을때 defaultValue를 반환
boolean containsKey(Object key) // 지정된 key가 있는지 확인
boolean containsValue(Object value) // 지정된 value가 있는지

int size()
boolean isEmpty()
void clear()
Object clone()

0개의 댓글