본문으로 바로가기

[Java] 해싱(Hashing)이란?

category 프로그래밍/자바 2019. 1. 8. 13:48

해싱이란?


:수많은 데이터를 테이블 형식에 대응(mapping) 시켜 저장할수 있도록 만든 데이터 관리 기법

 데이터들을 저장하고 찾을때 hash function을 통해 데이터를 효과적으로 저장 및 가져올수 있습니다.


- hash table


hash table 은 key,value값을 저장하는 데이터 구조인데 많은 개발자들이 원리를 모른다고 합니다.

hash table의 작동원리는 Hashmap.. api를 사용하는데 있어 많은 이해를 줄것입니다.



이름과 전화번호를 통해 해쉬 테이블을 만든다고 가정하겠습니다

여기선 이름이 key , 전화번호가 value

hash function()을 통해 key를 특정 index로 변환시키고 그 index에 데이터를 저장하게 됩니다

자바에서 hashCode()의 개념이 hash function()의 개념과 같습니다

왜 이런 구조를 사용할까?

만약 순차적인 공간에 데이터 100만건이 있고 (John Smith , 521-1234)  라는 데이터가  99만번째에 있다고 가정할 경우

John Smith key 값을 찾기위해 0번째부터 99만번째까지 순차적인 검색을 해야합니다.

하지만 만약 John Smith값을 알려줬을때 그것에 해당하는 특정 인덱스를 알려준다면 99만번째까지 검색할 필요가 없습니다

해당 인덱스에 바로 접근하면 됩니다.

이렇기 때문에 hash table을 사용하면 데이터의 검색의 효율이 매우 상승하게 됩니다.   


하지만 ,해쉬 테이블에는 index 즉, hash function에 의한 값이 중복이 될수 있다는 문제가 있습니다.

이것을 해결하는 방법은 separate chaining,open addressing,linear Probing등 여러가지 방법이 존재하는데 추후에 하나씩 공부하면서 올리겠습니다. 


'프로그래밍 > 자바' 카테고리의 다른 글

[자바] 네트워크 통신시 주의할점  (0) 2019.01.23
Network란 무엇인가?  (0) 2019.01.18
[Java] Object 클래스란?  (0) 2019.01.08
[Java] final 이란?  (0) 2019.01.08
Exception 처리방법  (0) 2019.01.06