해시 테이블은 배포 목록이라고도하며 그룹 객체를 저장하는 데 사용되는 컬렉션 클래스 구조입니다.
해시 테이블이란 무엇입니까?
배열과 벡터 모두 객체를 저장할 수 있지만 객체의 저장 위치는 무작위입니다. 즉, 객체 자체와 스토리지 위치 사이에 필요한 연결이 필요하지 않습니다. 객체를 찾으려면 각 요소와 특정 순서로만 비교할 수 있습니다 (예 : 배열 또는 벡터의 요소 수가 큰 경우). 크게 줄어 듭니다.
효과적인 저장 방법은 다른 요소와 비교되지 않으며 한 번에 얻을 수있는 레코드를 얻을 수 있다는 것입니다. 이를 위해서는 객체의 스토리지 위치와 객체의 주요 속성 (k로 설정) 사이에 특정 상응하는 관계를 설정하여 고유 한 스토리지 위치에 해당하는 각 객체에 해당해야합니다. 검색 할 때 확인할 객체의 주요 속성에 따라 F (k)의 값을 계산하십시오. 이 객체가 컬렉션에있는 경우 스토리지 위치 F (k)에 있어야하므로 세트의 다른 요소와 비교할 필요가 없습니다. 이 해당 관계 F를 해시 방법으로 불리며이 아이디어에 따라 설정된 테이블은 해시 테이블입니다.
Java는 해시 테이블을 사용하여 해시 테이블을 달성합니다.
• 용량 : 해시 테이블의 용량은 고정되지 않았으며 물체의 용량도 자동으로 증가 할 수 있습니다.
• 키 (키) : 각 스토리지 개체에는 키워드가 필요합니다. 해시 테이블의 모든 키워드는 독특합니다.
• 해시 코드 : 객체를 Hashtable에 저장하려면 키워드 키를 정수 데이터에 매핑하여 키의 해시 코드가되어야합니다.
• 항목 : 각 HashTable에는 키워드 도메인 키 및 값 도메인 값 (스토리지 개체) 인 두 개의 도메인이 있습니다. 키와 값은 모두 객체 유형 객체 일 수 있지만 비어있을 수는 없습니다.
• 하중 계수 : 충전 계수는 해시 테이블의 충만 함으로 표시되며 그 값은 위의 해시 테이블보다 요소 수의 길이와 같습니다.
해시 테이블 사용
해시 테이블에는 세 가지 주요 구성 방법이 있습니다.
hashtable (); // 기본 생성자, 초기 용량은 101, 최대 충전 계수 0.75입니다.
해시 가능 (int 용량);
HASHTABLE (int facection, float loadfactor)
해시 테이블의 주요 방법은 표 8-6에 나와 있습니다.
표 8-6 해시 테이블 정의에 의해 정의되는 방법
방법 | 기능 |
---|---|
void clear () | 해시 테이블을 다시 설정하고 지우십시오 |
부울이 포함 된 (객체 값) | 해시 테이블에 주어진 객체가 포함되어 있는지 확인하십시오. |
부울은 키 (객체 키) | 해시 테이블에 주어진 키워드가 포함되어 있는지 확인하십시오. true로 돌아 오는 경우, 그렇지 않으면 거짓이 반환됩니다. |
부울 isempty () | 해시 테이블이 비어 있는지 확인하십시오. true로 돌아 오면 거짓이 반환됩니다. |
객체 get (개체 키) | return null이없는 경우 해당 키워드를 얻는 개체 |
void rashash () | Hooth에 관계없이 확장 해시 테이블은 해시 테이블이 포화에 도달하면 자동 으로이 방법을 호출 할 수 있습니다. |
객체 풋 (객체 키, 객체 값) | 주어진 키워드와 함께 해시 테이블에 객체를 저장하십시오 |
객체 제거 (개체 키) | 해시 테이블에서 키워드 단계에 해당하는 개체 삭제, 객체가 NULL로 돌아 오지 않는 경우 |
int size () | 해시 테이블의 크기로 돌아갑니다 |
문자열 toString () | 해시 테이블의 내용을 문자열로 변환 |
해시 테이블의 생성은 새 연산자를 통해 구현 될 수도 있습니다. 그 진술은 다음과 같습니다.
Havetable은 = New Hashtable ();
예:
[예 8-12] 해시 테이블의 횡단.
// ************ ep8_12.java *************************** ***************************************************************************************** 누군가 ***************** import java.util.*; has.put ( "1", has.put (2)); ", new double (12.3)); set s = has.keyset (); for (iterator <string> i = s.erator (); i.hasnext ();) {system.out.println (has.get (has.get) i.next ());}}}
실행 결과 :
21312.3