Java - HashMap

춤추는개발자·2022년 12월 5일
0

Java 정리

목록 보기
52/59

HashMap과 Hashtable

  • 순서 없음, 키는 중복될수 없음, 값은 중복될수 있음
  • Map인터페이스를 구현, 데이터를 키와 값의 쌍으로 저장한다.
  • HashMap은 동기화가 되어있지 않음(최신), Hashtable은 동기화가 되어 있음(구버전)

HashMap

  • Map 인터페이스를 구현한 대표적인 컬렉션 클래스이다.
  • 순서를 유지할 수 없다. 만약 순서를 유지할 필요가 있다면 LinkedHashMap클래스를 사용하면 된다.
  • 해싱기법으로 데이터를 저장 합니다. 해싱기법의 사용으로 데이터가 많아도 검색이 빠릅니다.
  • put() 메서드로 기존에 저장되어 있는 똑같은 키로 다른 값이 들어오면 에러가 발생하는것이 아니고 기존에 저장되어 있는 값이 새로운 값으로 저장된다.

TreeMap

  • 범위 검색과 정렬에 유리한 컬렉션 클래스이다.
  • HashMap보다 데이터 추가, 삭제에 시간이 더 걸린다.
  • TreeMap을 가지고 TreeSet을 만들었기 때문에 같은 특성을 가지고 있습니다.

해싱 (hasing)

  • 해시함수로 해시테이블에 데이터를 저장하고 검색하는 방법을 말합니다
  • 해시테이블은 배열의 장점인 접근상과 링크드 리스트의 장점인 변경에 유리한것을 조합한 형태
  • Objects.hash() 메서드를 이용하면 된다.
  • 해시테이블에 저장된 데이터를 가져오는 과정은
      1. 키로 해시함수를 호출해서 해시코드(배열의 index)를 얻어 옵니다.
      1. 해시코드에 대응하는 링크드리스트를 배열에서 찾습니다.
      1. 링크드리스트에서 키와 일치하는 데이터를 찾습니다.
  • 해시함수는 같은 키에 대해 항상 같은 해시코드를 반환해야 합니다. 서로 다른 키일지라도 같은 값의 해시코드를 반환할 수도 있습니다.

0개의 댓글