Java作业集合编写数组-->大小可变的数组

Python011

Java作业集合编写数组-->大小可变的数组,第1张

的确,数组的长度是不能改变的,但是,可以参考ArrayList的实现,就是新建一个数组,然后逐个拷贝到新数组如int[]newArray=newint[largeSize]System.arrayCopy(src,dest)仅供参考

    你可以使用setter方法即可。

如下所示:

public class Percolation {

    private int gridSize

    private int[] openState //数组,期望长度gridSize*gridSize

    private int[] UFstate //数组,期望长度gridSize*gridSize

    public Percolation(int n){ // create n-by-n grid, with all sites blocked

        gridSize = n

    }

    

    private void setOpenState(){

        this.openState = new int[this.gridSize * this.gridSize]

    }

    

    private void setUFstate(){

        this.UFstate = new int[this.gridSize * this.gridSize]

    }

    

    private int[] getOpenState(){

        return this.openState

    }

    

    private int[] getUFstate(){

        return this.UFstate

    }

    

    public static void main(String[] args){

        Percolation per = new Percolation(10)

        per.setOpenState()

        per.setUFstate()

        System.out.println(per.getOpenState())

    }

}

首先,可变长度参数列表就是一个数组。

观察Method

类的方法Object invoke(Object obj, Object... args)

可以发现 参数obj是要执行的对象,args是方法的参数。

method.invoke(example, parameters)的意思是执行对象example的指定方法,这个方法接收参数为数组parameters中的元素。

方法myMethod只有一个参数:字符串数组。如果method.invoke(example, new String[] { "卧槽,", "牛逼! ", "你麻痹真强" }),系统会以为你要执行myMethod(String str1,String str2,String str3)。但是Example类没有这个方法,所以会报错。如果invoke(example, new Object[] {new String[] {"卧槽,","牛逼! ","你真强"}}),就是告诉系统,你要找的是myMethod(String[] strs),由于可变参数等价于数组,于是找到了了Example类中的myMethod(String... strings)。