의견.png

"해시맵"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
잔글
6번째 줄: 6번째 줄:
 
== 특징 ==
 
== 특징 ==
 
해시맵은 맵 인터페이스를 기반으로 구현되며 맵의 수행을 모두 지원하며, 키와 밸류에 널(null)을 허용한다. 해시맵은 맵의 순서를 보장하지 않고 해시 함수가 복수의 버킷으로 요소를 적절히 분산 시키는 것을 상정해, 기본 숭행(Get,Set)에 일정시간의 퍼포먼스를 제공한다. 해시맵의 인스턴스에는 성능에 영향을 주는 2개의 파라미터 초기용량, 부하계수가 존재한다. '''초기 용량'''은 버킷의 갯수이며 '''부하계수'''는 버킷에 들어가는 엔트리(entry)갯수와 버킷의 총수의 비율이다. 부하계수가 커질수록 메모리가 절약되지만 검색이 어렵다는 단점이 있다. 이와 더불어 해시맵은 동기화되지 않는다.<ref>Vaert Street, 〈[https://vaert.tistory.com/97 (Java) 해쉬맵(HashMap)에 대하여 심층적으로 알아보자]〉, 《티스토리》, 2014-03-21</ref>
 
해시맵은 맵 인터페이스를 기반으로 구현되며 맵의 수행을 모두 지원하며, 키와 밸류에 널(null)을 허용한다. 해시맵은 맵의 순서를 보장하지 않고 해시 함수가 복수의 버킷으로 요소를 적절히 분산 시키는 것을 상정해, 기본 숭행(Get,Set)에 일정시간의 퍼포먼스를 제공한다. 해시맵의 인스턴스에는 성능에 영향을 주는 2개의 파라미터 초기용량, 부하계수가 존재한다. '''초기 용량'''은 버킷의 갯수이며 '''부하계수'''는 버킷에 들어가는 엔트리(entry)갯수와 버킷의 총수의 비율이다. 부하계수가 커질수록 메모리가 절약되지만 검색이 어렵다는 단점이 있다. 이와 더불어 해시맵은 동기화되지 않는다.<ref>Vaert Street, 〈[https://vaert.tistory.com/97 (Java) 해쉬맵(HashMap)에 대하여 심층적으로 알아보자]〉, 《티스토리》, 2014-03-21</ref>
 +
 +
=== 인터페이스 ===
 +
* '''맵인터페이스''' : 맵(Map)인터페이스는 키(Key)와 값(value)를 하나의 세트로 묶어 저장하는 컬렉션 클래스를 구현하는데 사용한다. 값은 중복될 수 있지만 키는 중복될 수 없다. 데이터와 중복된 키와 값을 저장하면, 기존의 값은 없어지고 마지막에 저장된 값이 남게 된다.
 +
* '''맵.엔트리인터페이스''' : 맵.엔트리(Map.Entry)인터페이스는 맵인터페이스의 내부 인터페이스이다. 맵에 저장되는 키와 값을 다루기 위한 인터페이스이며 맵인터페이스를 구현하는 클래스는 맵.엔트리인터페이스도 함께 구현해야 한다.<ref>게임회사에서 살아남기, 〈[https://whatisthenext.tistory.com/81 (jAVA) 해시맵(HashMap)]〉, 《티스토리》, 2016-08-31</ref>
  
 
{{각주}}
 
{{각주}}

2019년 5월 29일 (수) 09:51 판

해시맵(Hashmap)은 컴퓨팅에서 키를 값에 매핑할 수 있는 구조인, 연관 배열 추가에 사용되는 자료 구조이다.

개요

해시맵은 저장은 느리지만 다량의 데이터를 검색하는데 뛰어난 성능을 가진 맵 인터페이스 계열의 대표적인 클래스로서 (key)와 밸류(value)의 쌍으로 이루어진다. 해시맵은 주요 메소드에 싱크로나이즈드(synchronized) 키워드가 없고 해시 알고리즘을 사용한다.[1]

특징

해시맵은 맵 인터페이스를 기반으로 구현되며 맵의 수행을 모두 지원하며, 키와 밸류에 널(null)을 허용한다. 해시맵은 맵의 순서를 보장하지 않고 해시 함수가 복수의 버킷으로 요소를 적절히 분산 시키는 것을 상정해, 기본 숭행(Get,Set)에 일정시간의 퍼포먼스를 제공한다. 해시맵의 인스턴스에는 성능에 영향을 주는 2개의 파라미터 초기용량, 부하계수가 존재한다. 초기 용량은 버킷의 갯수이며 부하계수는 버킷에 들어가는 엔트리(entry)갯수와 버킷의 총수의 비율이다. 부하계수가 커질수록 메모리가 절약되지만 검색이 어렵다는 단점이 있다. 이와 더불어 해시맵은 동기화되지 않는다.[2]

인터페이스

  • 맵인터페이스 : 맵(Map)인터페이스는 키(Key)와 값(value)를 하나의 세트로 묶어 저장하는 컬렉션 클래스를 구현하는데 사용한다. 값은 중복될 수 있지만 키는 중복될 수 없다. 데이터와 중복된 키와 값을 저장하면, 기존의 값은 없어지고 마지막에 저장된 값이 남게 된다.
  • 맵.엔트리인터페이스 : 맵.엔트리(Map.Entry)인터페이스는 맵인터페이스의 내부 인터페이스이다. 맵에 저장되는 키와 값을 다루기 위한 인터페이스이며 맵인터페이스를 구현하는 클래스는 맵.엔트리인터페이스도 함께 구현해야 한다.[3]

각주

  1. JayB Kim, 〈HashMap 과 Hashtable 의 차이〉, 《개인 블로그》, 2017-06-10
  2. Vaert Street, 〈(Java) 해쉬맵(HashMap)에 대하여 심층적으로 알아보자〉, 《티스토리》, 2014-03-21
  3. 게임회사에서 살아남기, 〈(jAVA) 해시맵(HashMap)〉, 《티스토리》, 2016-08-31

참고자료

같이 보기


  의견.png 이 해시맵 문서는 블록체인 기술에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.