这是最好的方式来增加" ArrayList的大小?

时间:2018-04-30 06:06:53

标签: java arrays size capacity

ArrayList<T> tempArray = new ArrayList<>(size);

我正在为我的合并排序构建一个tempArray,它将根据上下文对整数或字符串进行排序。因此类型为T ArrayList。

然后突然间,每次调用时我都会遇到IndexOutOfBounds错误:

tempArray.set(index, values.get(leftFirst));

经过一番研究后,我发现容量和大小并不意味着同样的事情。所以为了增加&#34;我刚刚添加了一个for循环的大小,该循环运行的大小时间每次都添加一个null:

for (int i = 0; i < size; i++)
    tempArray.add(null);

这是最好的解决方案吗?

2 个答案:

答案 0 :(得分:2)

您正在尝试将ArrayList用作地图,因此只需切换到Map并将键保持为整数:

    Map<Integer, Object> map = new HashMap<>(size);
    map.put(index, values.get(leftFirst));

然后按map.get method获取索引:

    map.get(index)

请注意,如果您的索引以百万开头,那么您将拥有〜百万个无法使用的空值。这似乎是非常不必要和错误的实施。

修改

来自评论/问题,使用T声明您的地图:

Map<Integer, T> map = new HashMap<>(size);

答案 1 :(得分:0)

在我看来,最好的方法是首先创建一个泛型类型的数组,然后用ArrayList创建包装器。

1.您可以看到如何使用泛型类型here

创建数组

2.您可以看到如何从数组here

创建ArrayList