我想在 java 中创建一个哈希表类,我将键、值对存储在链接列表的 ArrayList 中。我通过声明来做到这一点
ArrayList<LinkedList<T>> storage = new ArrayList();
然后我想创建一个linkList 对象,然后我可以使用它在arrayList 的每个索引内创建一个新的链表。我通过声明来做到这一点:
LinkedList<T> list = new LinkedList<T>();
然后我将我的添加函数设置为将元素添加到数组列表的哈希键索引内的 LinkedList 的第一个索引,如下所示:
public void add(K key, T value){
int arrayListIndex = (key.hashCode()) % this.initialCapacity;
System.out.println(arrayListIndex); //This tells us where we access the Array List;
if (hashBrown.get(arrayListIndex) == null){
hashBrown.add(arrayListIndex, list);
hashBrown.get(arrayListIndex).addFirst(value);
}
}
每次运行此代码时,我都会收到一个错误,其中我的索引为 7,我的大小为 0。这会导致错误:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 7, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:571)
at java.util.ArrayList.get(ArrayList.java:349)
at FastHashtable.add(FastHashtable.java:72)
at FastHashtable.main(FastHashtable.java:145)
我无法追踪这个索引越界错误的来源,任何人都可以提供建议。我在使用 ArrayLists 方面相当陌生,这让我认为我对 arrayList 的原始声明是不正确的。