首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现我的reHash()算法的不同方法

实现我的reHash()算法的不同方法
EN

Stack Overflow用户
提问于 2018-11-08 00:31:22
回答 1查看 942关注 0票数 0

我实现了一个哈希表,而不需要使用任何内置的java HashTable特性,并且在行中得到一个编译时错误:

代码语言:javascript
复制
newHashTable.add(reHashValueIndex, bucket.get(j));//insert values into new table

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

我了解到字符串与字符串类型的ArrayList of LinkedLists的类型不同,这就是我得到错误的原因,但我需要一些帮助,以另一种方式实现reHash()

代码语言:javascript
复制
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++;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-08 00:45:14

newHashTable的类型是ArrayList <' LinkedList <'String>>,所以您只能添加属于LinkedList的对象。

代码语言:javascript
复制
    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++;
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53199937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档