【发布时间】:2012-11-10 22:46:27
【问题描述】:
我想在 java 中创建一个哈希表类,将键、值对存储在链接列表的 ArrayList 中。我通过声明
来做到这一点 ArrayList<LinkedList<T>> storage = new ArrayList();
然后我想创建一个链接列表对象,然后我可以使用它在 arrayList 的每个索引内创建一个新的链接列表。我通过声明来做到这一点:
LinkedList<T> list = new LinkedList<T>();
然后我设置了 add 函数,将元素添加到 LinkedList 的第一个索引,该索引位于 arrayList 的哈希键索引内,如下所示:
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 的声明是不正确的。
【问题讨论】:
标签: java list hashtable indexoutofboundsexception