gpt4 book ai didi

java - 实现 reHash() 算法的不同方式

转载 作者:行者123 更新时间:2023-12-02 10:37:02 25 4
gpt4 key购买 nike

我正在实现一个哈希表,而不使用任何内置的 java HashTable 功能,并收到以下行的编译时错误:

newHashTable.add(reHashValueIndex, bucket.get(j));//insert values into new table

错误:找不到适合 add(int, String) 的方法

我发现 String 与 String 类型的 LinkedLists 的 ArrayList 类型不同,这就是我收到错误的原因,但我可以使用一些帮助来实现 reHash() 的另一种方法

public void reHash(ArrayList<LinkedList<String>> oldHashTable)
{
ArrayList<LinkedList<String>> newHashTable = new ArrayList(oldHashTable.size()*2);

//rehash values in oldHashTable
for (int i = 0; i < (oldHashTable.size()); i++)//loop old hashTable.size number of times
{
bucket = oldHashTable.get(i);//bucket = linkedList at oldHashTable
if (bucket != null)//if hashTable linkedList bucket element contains elements
{
for (int j = 0; j < bucket.size(); j++)//loop through it
{
if(bucket.get(j) != null)//looking for items
{
int reHashValueIndex = hash(bucket.get(j)); //rehash element
newHashTable.add(reHashValueIndex, bucket.get(j));//insert values into new table at new rehashed index
}
}
}
}
//increment expand variable by one
expand++;
}

最佳答案

newHashTable 的类型为 ArrayList <'LinkedList<'String>>。所以你只能添加LinkedList对象。您可能想要做的是首先重建存储桶,然后将其添加到新的哈希表中。像这样的东西

    public void reHash(ArrayList<LinkedList<String>> oldHashTable)
{
ArrayList<LinkedList<String>> newHashTable = new ArrayList(oldHashTable.size()*2);

//rehash values in oldHashTable
for (int i = 0; i < (oldHashTable.size()); i++)//loop old hashTable.size number of times
{
bucket = oldHashTable.get(i);//bucket = linkedList at oldHashTable

if (bucket != null)//if hashTable linkedList bucket element contains elements

{
newBucket = new LinkedList<String>();
for (int j = 0; j < bucket.size(); j++)//loop through it
{
if(bucket.get(j) != null)//looking for items
{
int reHashValueIndex = hash(bucket.get(j)); //rehash element
newBucket.add(reHashValueIndex, bucket.get(j));//insert values into new table at new rehashed index
}
}
}
newHashTable.add(newBucket);
}
//increment expand variable by one
expand++;
}

关于java - 实现 reHash() 算法的不同方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53199937/

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