这是 "Increase" ArrayList 大小的最佳方式吗?

Is This The Best Way To "Increase" The Size of An ArrayList?

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

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

然后我突然 运行 每当调用它时都会出现 IndexOutOfBounds 错误:

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

经过一些研究,我发现容量和大小并不是同一回事。因此,为了 "increase" 我刚刚添加了一个 for 循环,该循环运行 size 次,每次都添加一个空值:

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

这是最好的解决方案吗?

您正在尝试将 ArrayList 用作映射,因此只需切换到 Map 并将您的键作为整数保存:

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

然后通过map.get method获取索引:

    map.get(index)

请注意,如果您的索引以一百万开头,您将有 ~million 空值将不会被使用。它似乎非常不必要并且错误地实现了。

编辑

来自 comments/question,使用 T:

声明您的地图
Map<Integer, T> map = new HashMap<>(size);

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

1.You 可以看到如何从泛型类型创建数组 here

2.You 可以看到如何从数组创建 ArrayList here