[Java] HashMap

eeminsu·2021년 11월 20일
0
post-thumbnail

자바의 정석을 통해 공부한 내용을 요약하였습니다.

HashMap

1. 특징

  • Map인터페이스를 구현한 컬렉션 클래스이다.
  • 키(key)와 값(value)을 묶어서 하나의 데이터(entry)로 저장한다.
  • 해싱을 사용하기 때문에 많은 양의 데이터를 검색하는데 효과적이다.
  • 키(key)는 중복을 허용하지 않지만 값(value)은 중복을 허용한다.


2. 해싱이란

해시함수를 이용해서 데이터를 해시테이블에 저장하고 검색하는 기법

  • 해시함수는 데이터가 저장되어 있는 곳을 알려주기 때문에 다량의 데이터 중에서도 원하는 데이터를 빠르게 찾을 수 있다.

  • 해시테이블은 배열과 Linked list의 조합된 형태이다.

2-1. 해시테이블에 저장된 데이터를 가져오는 과정

  1. 검색하고자 하는 값의 키로 해시함수를 호출
  2. 해시함수의 계산결과(해시코드)로 해당 값이 저장되어 있는 LinkedList 찾기
  3. Linked List에서 검색한 키와 일치하는 데이터 찾기

LinkedList는 검색에 불리한 자료구조이기 때문에 하나의 서랍에 많은 데이터가 저장되어 있는 형태보다는 많은 서랍에 하나의 데이터만 저장되어 있는 형태가 더 빠른 검색결과를 얻을 수 있다.
이를 위해선 중복된 해시코드의 반환을 최소화해야 한다.
HashMap 또한 HashSet과 동일하게 equals()와 hashCdoe()를 이용하여 객체를 구별하고 있다.
HashMap은 이미 존재하고 있는 키에 대한 값을 저장하면 새로운 값으로 덮어쓰게 된다.



3. 메서드

3-1. 생성자

  • HashMap() - HashMap 객체를 생성
  • HashMap(int initialCapacity) - 지정된 값을 초기용량으로 하는 HashMap 객체를 생성

3-2. 추가

  • Object put(Object key, Object value) - 지정된 키와 값을 HashMap에 저장

3-3. 삭제

  • Object remove(Object key) - HashMap에서 지정된 키로 저장된 값 제거

3-4. 변경

  • Object replace(Object key, Object value) - 지정된 키의 값을 지정된 객체로 대체

3-5. 검색

  • Object get(Object key) - 지정된 키의 값을 반환

3-6. 기타

  • Set entrySet() - HashMap에 저장된 키와 값을 엔트리 형태로 Set에 저장해서 반환
  • Set keySet() - HashMap에 저장된 모든 키가 저장된 Set을 반환
  • Collection values() - HashMap에 저장된 모든 값을 컬렉션의 형태로 반환


TreeMap

  • 이진 검색 트리의 형태로 키와 값의 쌍으로 데이터를 저장한다.
  • TreeSet처럼 데이터를 정렬해서 저장한다.
  • 개별적인 검색은 HashMap이 TreeMap보다 빠르기 때문에 HashMap을 사용하는 것이 좋다.
  • 범위 검색이나 정렬이 필요한 경우에는 TreeMap을 사용하는 것이 좋다.


Properties

  • HashMap의 구버전인 Hashtable을 상속받아 구현한 클래스이다.
  • Hashtable은 키와 값을 Object 형태로 저장하는 반면 Properties는 String으로 저장한다.
  • 주로 애플리케이션의 환경설정과 관련된 속성을 저장하는데 사용되며 파일을 읽고 쓰는데 편리한 기능을 제공한다.
profile
안되면 될 때까지

0개의 댓글