public class HashTable {
/* Class containing next node and key and name value*/
class Node {
private long key;
public long getKey() {
return key;
}
public void setKey(long key) {
this.key = key;
}
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
Node next;
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
Node(long key, String value) {
this.key = key;
this.value = value;
next = null;
}
}
Nie jestem pewien, czy powinienem tworzyć Node[] size
w ten sposób.
Node[] size;
//The hash table array
Node[] array = null;
//hash table size. We typically choose m to be a power of 2
int m = 0;
// Constructor
HashTable(int size) {
m = size;
array = new Node[size];
}
HashTable() {
this(100);
}
// Search for a given key in the hashtable
// Note: you need to use hashFunction(long key) to determine the slot (array index) you will search in
public Node search(long key)
{
Node node = null;
/**
* TODO
*/
int hash = hashFunction(key);
Node list = size[hash];
while(list!=null) {
if(list.getKey() == key) {
return list;
}
else {
list = list.getNext();
}
}
return node;
}
Moja funkcja hashFunction (długi klucz) działa, ale mam problem z implementacją logiki funkcji wyszukiwania. Nie jestem pewien, co robię źle. Czy ktoś może pomóc. Moja implementacja wyszukiwarki zaczyna się od public Node search(long key)
.
1 odpowiedź
Używasz węzła list = size[hash]
; w wyszukiwaniu, ale jak widzę w konstruktorze parametrów, używasz array = new Node[size];
do inicjalizacji.
Więc spróbuj zamienić size[hash]
na array[hash]
.
W Twoim wklejonym kodzie nie widziałem zastosowania deklaracji Node []size
. Możesz usunąć zmienną tablicową rozmiaru.
Podobne pytania
Nowe pytania
java
Java to język programowania wysokiego poziomu. Użyj tego tagu, jeśli masz problemy z używaniem lub zrozumieniem samego języka. Ten tag jest rzadko używany samodzielnie i jest najczęściej używany w połączeniu z [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] i [maven].