gpt4 book ai didi

java - HashTable 中的搜索功能

转载 作者:行者123 更新时间:2023-12-01 20:18:16 25 4
gpt4 key购买 nike

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;
}
}

我不确定是否应该像这样创建Node[] size

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;
}

我的 hashFunction(long key) 可以工作,但我在实现搜索函数的逻辑时遇到问题。我不确定我做错了什么。有人可以帮忙吗?我的搜索实现从公共(public)节点搜索(长键)开始。

最佳答案

您正在使用 Node list = size[hash];在搜索中,但正如我在参数构造函数中看到的,您正在使用 array = new Node[size]; 来初始化它。

因此,尝试将 size[hash] 替换为 array[hash]

在您粘贴的代码中,我没有看到任何 Node []size 声明的使用。您可以删除大小数组变量。

关于java - HashTable 中的搜索功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58948643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com