数组的未知大小

时间:2015-11-30 07:10:07

标签: java arrays variable-length-array

在Java中,我正在尝试读取文件,然后我想将它们放在一个数组中。但是当我声明一个数组时,由于长度未知而发生错误。这是一个例子:

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解决这个问题,但是有一种方法适用于数组吗?

3 个答案:

答案 0 :(得分:2)

要使用数组,必须将数组初始化为某个初始长度。如果当前数组对于您的输入来说太小,您可以稍后创建一个更大的数组(并将原始数组的内容复制到其中)。这就是ArrayList的实施方式。

答案 1 :(得分:2)

  

我可以使用arraylist解决这个问题,但是有一种方法适用于数组吗?

基本上只复制ArrayList的逻辑。不,没有办法获得可变长度数组。 Java中的数组并不支持它。

如果以后需要数组,可以创建ArrayList,然后调用toArray以创建数组。

{1}}当你读。{/ p>

答案 2 :(得分:0)

您可以尝试以下内容:

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()));

    }
}