Java HW:创建我自己的哈希表-不确定如何在其中使用linkedlist
我有一个任务,我正在做我们自己的哈希表。我今天去了一个AI,他说我的代码“在正确的轨道上,但我应该使用链表”,我对他的意思有点困惑 请给我一个提示,说明我遗漏了什么Java HW:创建我自己的哈希表-不确定如何在其中使用linkedlist,java,hashtable,Java,Hashtable,我有一个任务,我正在做我们自己的哈希表。我今天去了一个AI,他说我的代码“在正确的轨道上,但我应该使用链表”,我对他的意思有点困惑 请给我一个提示,说明我遗漏了什么 class HashSeparateChaining extends HashTable { int size = 0; HashFunction hf; List<Integer> arrayList = new ArrayList<>(); public HashSep
class HashSeparateChaining extends HashTable {
int size = 0;
HashFunction hf;
List<Integer> arrayList = new ArrayList<>();
public HashSeparateChaining(int size, HashFunction hf) {
size = this.size;
hf = this.hf;
for(int i = 0; i < size; i++) {
arrayList.add(null);
}
}
@Override
void insert(int key) throws TableFullE {
arrayList.set(key, key);
}
@Override
void delete(int key) {
arrayList.set(key, null);
}
@Override
boolean search(int key) {
for(int z = 0; z < arrayList.size(); z++)
if(arrayList.get(z) == key)
return true;
return false;
}
}
类HashSeparateChaing扩展了哈希表{
int size=0;
HashFunction-hf;
List arrayList=新建arrayList();
公共HashSeparateChaining(int-size,HashFunction-hf){
尺寸=这个尺寸;
hf=this.hf;
对于(int i=0;i
那么人工智能是否意味着我应该使用这样的东西
List<LinkedList<Integer, String>> list = new LinkedList<>();
List List=newlinkedlist();
我不确定家庭作业帮助网站是否也有,但一个快速的谷歌搜索出现了
这应该给你一个想法
您的底层实现可能是列表的阵列列表
插入:
将HashFunction
应用于该键将在ArrayList中为您提供一个索引。
然后将该键添加到该索引中存储的列表的后面。
(需要澄清您的表已满意味着什么,以便您知道何时抛出TableFullE
异常)
删除:
像insert一样,将您的HashFunction
应用于键,以找出我们搜索的列表。最好使用列表
的方法删除该项
搜索:
与delete类似,除了使用列表的contains()
来回答搜索查询之外
有很多可能的优化,但请先尝试让它工作。请参阅此链接,它可能会有帮助。哈希函数不能保证没有冲突。所以你需要有一个处理它们的机制。通常,对于哈希表数据结构,冲突是通过在存在项的每个索引中存储指向链接列表的指针来处理的。如果您遇到冲突,您会将该项添加到该索引中存储的列表中。AFAIK通常的政策是允许HW问题(OPs有责任不违反其学校政策),但必须遵循通常的“此代码不起作用”准则,即提供1。)问题2。)解决问题的尝试3。)以See的形式清楚地解释什么工作不正常: