我实现了一个哈希表,而不需要使用任何内置的java HashTable特性,并且在行中得到一个编译时错误:
newHashTable.add(reHashValueIndex, bucket.get(j));//insert values into new table错误:找不到适合添加的方法(int,String)
我了解到字符串与字符串类型的ArrayList of LinkedLists的类型不同,这就是我得到错误的原因,但我需要一些帮助,以另一种方式实现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++;
}发布于 2018-11-08 00:45:14
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++;
}https://stackoverflow.com/questions/53199937
复制相似问题