java에서 해시표 및 그 응용에 대한 상세한 설명

2872 단어 java해시 시계
해시표는 산목록이라고도 하는데 그룹 대상을 저장하는 집합류 구조이다.
해시시계가 뭐예요?
수조와 벡터는 모두 대상을 저장할 수 있지만 대상의 저장 위치는 무작위이다. 즉, 대상 자체와 그 저장 위치 사이에 필연적인 관계가 없다는 것이다.하나의 대상을 찾으려면 특정한 순서(예를 들어 순서 찾기 또는 2분 찾기)로만 각 원소와 비교할 수 있으며, 수조나 벡터 중의 원소 수량이 많을 때 찾는 효율이 현저히 떨어진다.
다른 요소와 비교하지 않고 한 번에 액세스하면 필요한 기록을 얻을 수 있는 효과적인 저장 방식이다.이것은 대상의 저장 위치와 대상의 관건적인 속성(k로 설정) 사이에 특정한 대응 관계(f로 설정)를 구축하여 모든 대상이 유일한 저장 위치와 대응하도록 해야 한다.찾을 때 검색 대상의 관건적인 속성 k에 따라 f(k)의 값을 계산하면 된다.만약 이 대상이 집합에 있다면, 반드시 저장 위치 f(k)에 있기 때문에 집합 중의 다른 요소와 비교할 필요가 없다.이런 대응 관계 f를 해시(hash) 방법이라고 하고 이런 사상에 따라 세워진 표를 해시표라고 한다.
Java는 해시 테이블 클래스(Hashtable)를 사용하여 해시 테이블을 구현합니다. 다음은 해시 테이블과 관련된 개념입니다.
• 용량(Capacity): Hashtable의 용량은 고정되어 있지 않으며 객체에 따라 용량이 자동으로 증가합니다.
• 키워드(Key): 저장된 모든 대상에 키워드가 필요합니다. 키는 대상 자체일 수도 있고 대상의 일부일 수도 있습니다(예를 들어 속성).Hashtable에 있는 모든 키워드가 유일해야 합니다.
• 해시 코드(Hash Code): 대상을 해시테이블에 저장하려면 키워드 키를 정형 데이터에 비추어 키의 해시 코드가 되어야 합니다.
• 항목(Item): Hashtable의 모든 항목은 키워드 영역 key와 값 영역 value(저장된 대상) 두 개의 영역이 있습니다.키와 value는 임의의 Object 형식의 대상이 될 수 있지만 비어 있을 수는 없습니다.
• 메우기 인자(Load Factor): 메우기 인자는 해시표의 가득 찬 정도를 나타내며, 그 값은 원소수가 해시표의 길이보다 긴 것과 같다.
해시 시계의 사용
해시 표류는 주로 세 가지 형식의 구조 방법이 있다.
    Hashtable();//기본 구조 함수, 초기 용량 101, 최대 충전 인자 0.75
    Hashtable(int capacity);
    Hashtable(int capacity,float loadFactor)
해시 표류의 주요 방법은 표8-6과 같다.
표 8-6 해시 표 정의의 흔한 방법
방법
기능
void clear()
해시 테이블 재설정 및 비우기
boolean contains(Object value)
해시 테이블에 주어진 대상이 포함되어 있는지 확인하고true를 되돌려주지 않으면false를 되돌려줍니다.
boolean containsKey(Object key)
해시 테이블에 주어진 키워드가 포함되어 있는지 확인하고true를 되돌려주지 않으면false를 되돌려줍니다.
boolean isEmpty()
해시 테이블이 비어 있는지 확인하십시오. 만약true로 돌아가지 않으면false로 돌아갑니다
Object get(Object key)
키워드에 대한 대상을 가져옵니다. 되돌아오는 null이 존재하지 않으면
void rehash()
다시 해시, 해시표를 확장하여 더 많은 원소를 저장할 수 있도록 하고, 해시가 포화될 때 시스템은 자동으로 이 방법을 호출한다
Object put(Object key,Object value)
주어진 키워드로 대상을 해시 테이블에 저장합니다. 이 키워드와 요소는 비어 있을 수 없습니다.
Object remove(Object key)
해시 테이블에서 주어진 키워드에 대응하는 대상을 삭제하고, 이 대상이 null로 되돌아오지 않으면
int size()
해시 시계의 크기를 되돌려줍니다.
String toString()
해시 테이블 내용을 문자열로 변환하기
해시 테이블의 생성도 new 조작부호를 통해 이루어질 수 있습니다.그 구문은 다음과 같습니다.
    HashTable has=new HashTable();
예:
[예8-12] 해시표의 역력.

//********** ep8_12.java **********
import java.util.*;
class ep8_12{
  public static void main(String args[]){
    Hashtable has=new Hashtable();
    has.put("one",new Integer(1));
    has.put("two",new Integer(2));
    has.put("three",new Integer(3));
    has.put("four",new Double(12.3));
    Set s=has.keySet();
    for(Iterator<String> i=s.iterator();i.hasNext();){
      System.out.println(has.get(i.next()));
    }
  }
}
실행 결과:

2
1
3
12.3

좋은 웹페이지 즐겨찾기