我有一个带有默认“Cat”、“Dog”、“Simon”、“Smith”的数组,因此长度为 3。
如果我想编辑 smith 我输入 array[3] = "JR Smith"
但是如果用户想向我尝试的数组添加另一件事:array[4] = "Car" 但它让我超出了界限。
如何在初始化之外扩展数组?
//西蒙
编辑*
是的,我知道有列表。但是数组没有办法。因为我花了很长时间才写出像 200 长度的数组...
您不能在其初始化之外扩展数组。为此,建议使用ArrayList。它具有超出其预定义大小的属性。
你应该使用一个列表。数组在 java 中不是动态的:
import java.util.*;
List<String> list = new ArrayList<String>();
list.add( "cat" );
list.add( "dog" );
list.add( "bird" );
//later
list.add( "car" );
我建议使用 ArrayList。您始终可以使用 toArray() 方法将 ArrayList 转换为数组。
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/ArrayList.html#toArray%28%29
有一种方法可以扩大数组:
int[] array = { 1, 2, 3 };
int[] newArray = new int[5];
System.arraycopy(array, 0, newArray, 0, array.length);
array = newArray;
array[4] = 5;
array
就是现在{ 1, 2, 3, 0, 5 }
您创建一个更大的,将旧的复制到新的并使用新的。这也是ArrayList
内部所做的。
尝试ArrayList
改用。一旦你初始化了一个数组,你就不能改变它的大小,当然除非你重新初始化它。
在这里看到Java 动态数组大小?
我个人最喜欢的方法是导入 java.util.Arrays 然后使用类似的东西:
List tempList = Arrays.asList(yourArray)
tempList.add(whateverYouWant)
yourArray = tempList.toArray();
第一行将您的数组转换为列表,第二行添加到列表中,第三行将其更改回来。