컬렉션 프레임 워크와 배열을 사용하지 않고 Java에서 기본 HashTable 데이터 구조를 구현하려고합니다.해시 테이블을 구현하기 위해 Java에서 널리 사용되는 해시 알고리즘은 무엇입니까?
내가 참조로 배열에 저장할 개별 노드를 사용하려고합니다. 를 얻기 위해
public class MyHashTable {
private Node[] nodeArray = new Node[100];
public MyHashTable() {
for(int i=0 ; i<100; i++) {
nodeArray[i] = new Node();
}
}
private int getIndex(String key) {
long hashCode = key.hashCode();
return (int)hashCode%100;
}
// Other helper methods...
}
:
class Node {
private int data;
private String key;
private Node next;
// Other helper methods
}
참조하기 위해 미리 만든 노드 객체를 보유 할 배열을 만듭니다
이 노드를 정의
나는 이런 식으로 일을하고있다 해시 코드, Java의 inbuilt 메서드 -> hashCode()를 사용하고 있습니다.
키가 "second"인 경우 음수 인 해시 코드를 반환하므로 프로그램이 예외로 종료됩니다.
내 질문은 :
내가 해싱에 사용할 수있는 널리 어떤을 사용하는 모든 표준 해시 알고리즘이 있습니까? 나는 학습 목적으로 쓰고있다. 당신은 예를 들어 사용할 수
'hashCode()'가 널리 사용됩니다. 'Math.abs()'를 사용하면 음수를 반환하는 경우 'hashCode()'에서 양수 값을 얻을 수 있습니다. – Rohan
@Rohan : 답변 해 주셔서 감사합니다. 사용할 수있는 hashCode() 이외의 다른 해싱 알고리즘이 있습니까? – CuriousMind
자바'HashMap'과'HashSet' 클래스는 내부적으로'hashCode()'를 사용합니다. 해시 코드 값을 만드는 데 사용 된 다른 표준 메소드에 대해서는 알지 못합니다. 당신은 항상 하나를 포함하는 외부 라이브러리를 찾을 수 있습니다. – Rohan