0

我需要一个数组对象,它应该包含 3 个对象。

起初是使用Collection,但我需要添加到特定的地方。例如:

CollectionObject.add(pos, myObject)

然后我去了ArrayList,创建了这样的对象:

ArrayList<MyObject> array = new ArrayList<MyObject>();

创建它时,它会创建大小为 1 的数组,但我需要添加到位置 0-2,因此添加如下:

array.add(2, myObject)

我有 :

 java.lang.IndexOutOfBoundsException: Index: 2, Size: 1

我的解决方案是,创建 arraylist,向其中添加 3 个空对象,然后覆盖,但还有更微妙的解决方案吗?有没有更好的数组保存对象,比如Vector什么?

4

3 回答 3

2

改为使用 3 个元素的数组,如下所示:

MyObject [] array = new MyObject[3];
array[2] = myObject;
于 2012-10-06T13:31:30.933 回答
2

ArrayList不是数组,它是List使用隐藏数组实现的。您需要向其中添加三个项目,然后才能按索引处理项目,如下所示:

ArrayList<MyObject> array = new ArrayList<MyObject>(3);
array.add(null);
array.add(null);
array.add(null);
array.set(2, myObject)

ArrayLists 自动增长。如果您不需要此功能,请使用普通数组,例如,如下所示:

MyObject array = new MyObject[] {myObject1, myObject2, myObject3};

现在您可以使用索引运算符替换项目:

array[2] = newMyObject;
于 2012-10-06T13:32:20.560 回答
1
MyObject[] a = new MyObject[3];
a[2] = new MyObject();
于 2012-10-06T13:33:22.873 回答