참고 기사 :
https://blog.csdn.net/yyyljw/article/details/80903391
https://www.jianshu.com/p/a89e9487a06c
https://blog.csdn.net/woshimaxiao1/article/details/83661464
https://blog.csdn.net/eaphyy/article/details/84386313
얕은을 배운, 토론을 시작하십시오.
이 포함됩니다 :
1. 해시 테이블
2. HashMap의 해시 알고리즘
정적 최종 INT의 해시 (개체 키) { INT 시간; 반환 (키 == null이 )? 0 (H = key.hashCode ()) ^ (H >>> 16 ); }
3. HashMap의 룩업 배열 첨자 이유
(N - 1) 해시
해시 테이블
해시 테이블 (또한 해시 테이블 호출)는 키 값 (키 값) 및 데이터 구조에 직접 접속에 기초한다. 즉, 키 값을 기준으로 레코드를 테이블에 검색을 빠르게 할 수있는 위치에 매핑되는 액세스 할 수 있습니다. 스토리지 어레이를 기록 해시 함수 호출이 매핑 함수는 해시 테이블이라고 부른다.
다른 데이터 구조에서 우리가 연구 해시 테이블 앞에 오게,보기
어레이는 : 메모리의 물리적 데이터의 동일한 유형의 연속하는 저장 공간이다. 특징 : 느린 업데이트 및 삭제 작업을 빨리 찾기를 삽입합니다.
선형리스트 : 체인화 메모리 구조, 메모리 데이터 구조가 연속되지 않을 수, 각 데이터 노드에 저장된 데이터 요소 사이의 순차 논리 관계가 일치하지 않을 수 있고, 데이터 요소들 사이의 논리적 관계 포인터 필드 결정. 특징 : 빠르고 느린, 삽입, 업데이트 및 삭제 작업을 찾습니다.
그래서, 당신은 배열과 연결리스트와 함께 데이터 구조를 설계 할 수 있다면? 이 해시 테이블입니다.
해시 테이블 기능 :
1 해시 테이블은 저장 키 값 형태이다.
어드레스 인덱스 = F (키) 함수 f는 일반적으로 해시 함수라고 직접 설계에 영향을 미칠 것이다 2. 트렁크 해시 테이블 인덱스 어레이, 즉 함수에 의해 결정되는 배열이며 해시 테이블의 장점.
3. 어레이의 요소들이 연결 목록은
예를 들면 :
이름이 들어 Person 클래스를 기존 1000 Person 객체에서 시대의 두 가지 속성을 가진 당신은 어떻게 할 개체의 "조 스미스"이름을 찾을 수 있습니다 (유일한 이름 가정)?
에없는 이름 개체의 "조 스미스"를 찾아 ArrayList에에 1000 Person 객체, 다음의 ArrayList를 통과 : 일부 학생들은 말을하고 싶다.
예,이 방법은 가능하지만, 조 스미스는 마지막이 그 효율성이 매우 낮은 수 있도록 1000을 통과하는 것을 의미 직전 경우, 우리는이 문제를 해결하는 방법이 없다?
이 예제 해시 테이블 솔루션은 다음을 참조하십시오 TODO를