java - 是什么导致我的数组列表中出现此 ArrayOutOfBoundsException?

标签 java arraylist hashtable indexoutofboundsexception

import java.util.*;
import java.util.ArrayList;

class MyHashTable<K extends Comparable<K>, E> {

    private ArrayList<Entry<K,E>> bucket = new ArrayList<Entry<K,E>>();
    private int bucketSize;
    private int collisionCount = 0;

    // Constructor that takes number of buckets as input
    public MyHashTable( int len ) 
    {
        this.bucketSize = len;
        for ( int i = 0; i < len; i++ ) 
        {
            bucket.set( i, null ); //ERROR APPEARS ON THIS LINE
        }
    }

当我从另一个方法调用时被调用:

MyHashTable<MyString, AnimalRecord> linearProbing = new MyHashTable<MyString, AnimalRecord>(59);
linearProbing.put( lion.name, lion );

最佳答案

private ArrayList<Entry<K,E>> bucket = new ArrayList<Entry<K,E>>();

创建一个空数组列表。

set 方法

Replaces the element at the specified position in this list with the specified element
Throws: IndexOutOfBoundsException - if the index is out of range (index < 0 || index >= size())

所以

bucket.set( i, null );

尝试将 null 设置为 i第 th 个元素(从 0 开始)。但是 arraylist 是空的,这就是你得到异常的原因。

你想要的是 add 方法:

for ( int i = 0; i < len; i++ ) 
{
    bucket.add(null);
}

添加 nullArrayList 的结尾.

关于java - 是什么导致我的数组列表中出现此 ArrayOutOfBoundsException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24389620/

相关文章:

java - 正则表达式将字符串转换为 json 数组

java - Android 通过UDP套接字发送对象

java - DAO 中的结果集问题

android - 如何将位置类型 ArrayList 从 android 中的 MainActivity 传递给 MapsActivity?

java - 如何在 Java 8 中组合两个 ImmutableMap<String,String>?

java - 内存直接映射到字符串

java - 使用 Arraylist addAll() 创建一个新列表,其中包含具有不同引用的新对象

java - 从另一个类中的数组列表值将 int 分配给变量

OCAML hashtbl 删除特定绑定(bind)

java - 哈希表。名史。为什么不用哈希表?