我需要创建动态变化的对象数组。如何创建这个。请帮帮我。
PrefixMatcher[] pm = new PrefixMatcher[8];
Scanner infile = new Scanner(new File(url.toURI()));
while (infile.hasNextLine()) {
int len = infline.length();
//here i need to create reinitialize the same object using length of the file's first line
}
答案 0 :(得分:1)
Java中的数组具有固定大小,在声明时指定。要增加数组的大小,您必须创建一个更大的新数组,并将所有旧值复制到新数组中。
例如:
char[] copyFrom = { 'a', 'b', 'c', 'd', 'e' };
char[] copyTo = new char[7];
System.out.println(Arrays.toString(copyFrom));
System.arraycopy(copyFrom, 0, copyTo, 0, copyFrom.length);
System.out.println(Arrays.toString(copyTo));
另一个例子:
String[] array = new String[5];
...
array = expand(array, 10);
private String[] expand(String[] array, int size) {
String[] temp = new String[size];
System.arraycopy(array, 0, temp, 0, array.length);
for(int j = array.length; j < size; j++)
temp[j] = "";
return temp;
}
答案 1 :(得分:0)
ArrayList
正是您所寻找的,List
的实现,它在内部使用数组来存储数据
答案 2 :(得分:0)
尝试使用ArrayList
。当数组大小未修复时,可以使用ArrayList。
ArrayList<PrefixMatcher> pm = new ArrayList<PrefixMatcher>();
您可以通过索引来访问特定位置的元素。
pm.get(123);
答案 3 :(得分:0)
你无法调整数组的大小,我认为现在很明显很明显,但是,如果你不能使用Collections API的List
实现,你可以创建一个新的数组,大于第一个数组,并将其内容复制到它,然后替换引用。
String[] values = new String[10];
String[] newValues = new String[20];
System.arraycopy(values, 0, newValues, 0, values.length);
values = newValues;
你可以将它包装在方法中以使其更容易......
public String[] grow(String[] source, int newSize) {
String[] newValues = new String[20];
System.arraycopy(source, 0, newValues, 0, source.length);
return newValues;
}
就个人而言......虽然......我会认真考虑使用像ArrayList
或LinkedList
这样的东西...它只是更简单;)