Java 数组的未知大小
在Java中,我尝试读取文件,然后将它们放入数组中。但是,当我声明数组时,由于长度未知而发生错误。下面是一个例子:Java 数组的未知大小,java,arrays,variable-length-array,Java,Arrays,Variable Length Array,在Java中,我尝试读取文件,然后将它们放入数组中。但是,当我声明数组时,由于长度未知而发生错误。下面是一个例子: Object unsortedInt[]; try { BufferedReader bR = new BufferedReader(new FileReader(x)); String values = bR.readLine(); int index=0; while
Object unsortedInt[];
try {
BufferedReader bR = new BufferedReader(new FileReader(x));
String values = bR.readLine();
int index=0;
while (values != null){
unsortedInt[index]=values;
values= bR.readLine();
index++;
}
bR.close();
}
catch (IOException e) {
e.printStackTrace();
}
我可以使用arraylist解决这个问题,但是有没有一种方法可以使用数组?为了使用数组,必须将数组初始化为某个初始长度。如果当前数组对于您的输入来说太小,您可以稍后创建一个更大的数组(并将原始数组的内容复制到其中)。这就是实现ArrayList的方法。为了使用数组,必须将数组初始化为某个初始长度。如果当前数组对于您的输入来说太小,您可以稍后创建一个更大的数组(并将原始数组的内容复制到其中)。这就是
ArrayList
的实现方式
我可以使用arraylist解决这个问题,但是有没有一种方法可以使用数组
基本上,仅通过复制ArrayList
的逻辑。不,无法获得可变长度数组。Java中的数组不支持这一点
如果以后需要数组,可以创建ArrayList
,然后调用toArray
创建数组
您可以只读取一次文件来计算行数,然后再次实际读取数据。。。但在阅读时使用ArrayList
要好得多
我可以使用arraylist解决这个问题,但是有没有一种方法可以使用数组
基本上,仅通过复制ArrayList
的逻辑。不,无法获得可变长度数组。Java中的数组不支持这一点
如果以后需要数组,可以创建ArrayList
,然后调用toArray
创建数组
您可以只读取一次文件来计算行数,然后再次实际读取数据。。。但是在阅读时使用
数组列表会更好。您可以尝试以下方法:
public class AddItemToArray {
private int[] list = new int[0];//you should initialize your array first.
public int[] getList() {
return list;
}
public void push(int i) {
int fLen = list.length;//you can check the current length of your array and add your value to the next element of your array with the copy of previous array
list = Arrays.copyOf(list, list.length + 1);
list[fLen] = i;
}
public static void main(String[] args) {
AddItemToArray myArray = new AddItemToArray();
myArray.push(10);
myArray.push(20);
myArray.push(30);
System.out.println(Arrays.toString(myArray.getList()));
}
}
您可以尝试以下方法:
public class AddItemToArray {
private int[] list = new int[0];//you should initialize your array first.
public int[] getList() {
return list;
}
public void push(int i) {
int fLen = list.length;//you can check the current length of your array and add your value to the next element of your array with the copy of previous array
list = Arrays.copyOf(list, list.length + 1);
list[fLen] = i;
}
public static void main(String[] args) {
AddItemToArray myArray = new AddItemToArray();
myArray.push(10);
myArray.push(20);
myArray.push(30);
System.out.println(Arrays.toString(myArray.getList()));
}
}
将文件读入一次,然后计算行数。然后,在声明大小和行数后再次运行它以将其保存到数组中。另外,更常规的做法是将所有类型信息保留在一个位置,即Object[]unsortedInt
而不是Object unsortedInt[]
。您读取一次文件,然后计算行数。然后,在声明大小和行数后再次运行它以将其保存到数组中。另外,更常规的做法是将所有类型信息保留在一个位置,即Object[]unsortedInt
而不是Object unsortedInt[]
。