我正在为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 []数组中创建一个新对象?
答案 0 :(得分:1)
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)
是固定长度的。你需要用所需的长度初始化它们。
考虑使用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创建包含更多元素的新数组。
答案 4 :(得分:0)
您可以使用ArrayList执行此操作
arraylist.add(对象);