0

我正在为 Android 平台开发,为了简化问题,我使用实体的伪名称。

我有一个 StuffClass[] 类的对象数组 stuff[]。

StuffClass stuff[]={
new StuffClass(Argument, argument, argument),
new StuffClass(argument, argument, argument)
};

我有一个活动返回三个参数的结果,然后我想用它来向 stuff[] 添加一个新对象。我这样做如下:

stuff[stuff.length]=new StuffClass(argument, argument, argument);

我得到了 ArrayOutOfBounds (认为会发生)。

那么我该如何在 stuff[] 数组中创建一个新对象呢?

4

5 回答 5

1

数组是静态的,如果不创建新数组,您就无法更改大小。取而代之的是,您可以使用动态数据结构,例如ArrayList

例子:

List<MyType> objects = new ArrayList<>();
objects.add(new MyType());

在这里,您忘记了数组大小。

于 2013-08-21T00:39:47.443 回答
1

Array在Java中有点特殊,它的长度在初始化时是固定的,以后不能扩展它。

您可以做的是创建一个新数组,并用于System.arraycopy生成一个新数组,这是示例代码:

  String[] arr1 = new String[]{"a", "b"};
  String[] arr2 = new String[3];

  System.arraycopy(arr1, 0, arr2, 0, 2);
  arr2[2] = "c";
于 2013-08-21T00:45:46.590 回答
0

您不能增加现有数组的大小。创建后,数组的大小是固定的。

您将需要创建另一个更大的数组并将项目从旧数组复制到新数组。

更好的选择是使用ArrayList. 当您将add项目添加到时ArrayList,如果需要,容量将在幕后增长;您不必担心增加尺寸。

于 2013-08-21T00:39:26.610 回答
0

java中的数组是固定长度的。您需要使用所需的长度初始化它们。

考虑使用像ArrayList这样的集合,它会为您处理所有事情。

List<StuffClass> myList = new ArrayList<>();
myList.add(...);

列表支持与数组类似的行为,即:

myList.set(i, elem);
myArray[i] = elem;

elem = myList.get(i);
elem = myArray[i];

len = myList.size();
len = myArray.length;

然后,您可以将列表转换为数组。

StuffClass[] myArray = myList.toArray(new StuffClass[myList.size()]);

如果您不想使用列表,请考虑使用System.arrayCopy创建一个包含更多元素的新数组。

阅读here以获得良好的描述。

于 2013-08-21T00:40:17.303 回答
0

您可以使用 ArrayList 来执行此操作

arraylist.add(object);

于 2013-08-21T00:40:36.513 回答