如何将一个Arraylist连接到另一个Arraylist的一个索引

问题描述 投票:0回答:1

我是一名编码和 Java 专家。我现在正在学习 Hashtable。

我在这里遇到的困难是将 ArrayList 连接到另一个 ArrayList 的索引之一。 我想要实现的简单图像(图像) 我很难编写代码

class HashTable { 
    private int size;
    private ArrayList<Pair> hashTable;
    Pair Pair;  

    // Constructor
    public j(int m) {
        Pair = null;
        size = m;
        hashTable = new ArrayList<>(m);   
        for (int i = 0; i < m; i++) {           
           // hashTable.add(null);
            hashTable.add(Pair);
        }
    }
private static class Pair {  
        Integer key;
        Integer value;

        public Pair(Integer key, Integer value) {
            this.key = key;
            this.value = value;
        }
  }
private int addressOfList(Integer key) {
        int index = Math.floorMod(key, size);
        return index;
    }

public void insert(Integer key, Integer value) {
        int index = addressOfList(key);             
        Pair existingPair = hashTable.get(index);
        
        Pair newPair = new Pair(key, value);
        ArrayList<Pair> listAtIndex = new ArrayList<>();

        // if there is not jet a Pair in hashTabel.get(index)
        if(existingPair == null) {
            //connect listAtIndex to an index                    
            hashTable.set(index, newPair);  // here is where im having problems      
            listAtIndex.add(0, newPair); 
            
        }else if(newPair.key.equals(existingPair.key)) {
            listAtIndex.add(0, newPair);
        }        
   }
}

因此,如果我解释我的代码,我想将

listAtIndex
hashTable
中的索引之一连接起来。

所以我首先开始写插入方法

hashTable.set(index, listAtIndex);
但是当然有一个语法错误,因为 set-Method 中的第二个参数需要是一个对象(如果我清楚的话..)

有人可以帮助我吗?

java arraylist hashtable
1个回答
0
投票

您的代码以及您尝试创建的逻辑中存在很多问题。我浏览了代码并试图理解

您基本上是在尝试使用 List 创建一个

Map<T,V>

此外,您尝试在您的情况下实现哈希函数,它的

addressOfList
也是错误的。更好的功能是
Objects.hash(key)

此外,在构造函数中,您使用 null 元素初始化

list
。没有必要这样做。

       for (int i = 0; i < m; i++) {           
           // hashTable.add(null);
            hashTable.add(Pair);
        }

此外,您正在创建一个本地列表,在函数调用结束后使用 newPair

listAtIndex.add(0, newPair); 
初始化它后,该列表将丢失其引用,这是毫无意义的。

© www.soinside.com 2019 - 2024. All rights reserved.