在Java中为已初始化的对象数组添加值?

时间:2013-08-21 00:37:40

标签: java android

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

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

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

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

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

我得到了ArrayOutOfBounds(想象一下)。

那么我怎样才能在stuff []数组中创建一个新对象?

5 个答案:

答案 0 :(得分:1)

Java中的

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

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

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

  System.arraycopy(arr1, 0, arr2, 0, 2);
  arr2[2] = "c";

答案 1 :(得分:0)

您无法增加现有阵列的大小。一旦创建,阵列的大小就固定了。

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

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

答案 2 :(得分:0)

数组是静态的,你不能在不创建新数据的情况下改变大小。您可以使用动态数据结构,例如ArrayList

示例:

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

这里你忘记了数组大小。

答案 3 :(得分: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创建包含更多元素的新数组。

read here for a good description.

答案 4 :(得分:0)

您可以使用ArrayList执行此操作

arraylist.add(对象);