ArrayList<T> tempArray = new ArrayList<>(size);
我正在为我的合并排序构建一个 tempArray,它将根据上下文对整数或字符串进行排序。因此类型为 T ArrayList。
然后,每当调用此方法时,我都会突然遇到 IndexOutOfBounds 错误:
tempArray.set(index, values.get(leftFirst));
经过一番研究后,我发现容量和大小并不是同一回事。因此,为了“增加”大小,我刚刚添加了一个 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 不会使用的空值。这似乎是非常不必要和错误实现的。
编辑
从评论/问题中,使用 T
声明您的 map :
Map<Integer, T> map = new HashMap<>(size);
关于java - 这是 "Increase"ArrayList 大小的最佳方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50094820/