Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更改二维ArrayList中某些ArrayList的大小?_Java_Arrays_Arraylist_Multidimensional Array_2d - Fatal编程技术网

Java 如何更改二维ArrayList中某些ArrayList的大小?

Java 如何更改二维ArrayList中某些ArrayList的大小?,java,arrays,arraylist,multidimensional-array,2d,Java,Arrays,Arraylist,Multidimensional Array,2d,我用这个类实现了一个2dArrayList。我希望方法criaDimensao()仅在matriz的索引位置将值放入ArrayList中,但它会在matriz的所有索引中始终放置值 public class Matriz { private ArrayList<ArrayList<Integer>> matriz = new ArrayList<>(); //constructor public Matriz(){ }

我用这个类实现了一个2d
ArrayList
。我希望方法
criaDimensao()
仅在
matriz
的索引位置将值放入
ArrayList
中,但它会在
matriz
的所有索引中始终放置值

public class Matriz {
    private ArrayList<ArrayList<Integer>> matriz = new ArrayList<>();

    //constructor
    public Matriz(){

    }

    //constructor
    public Matriz(int lenght){
        int c = 0;
        ArrayList<Integer> init = new ArrayList<>();
        while (c < lenght){
            matriz.add(init);
            c +=1 ;
        }
    }

    public boolean criaDimensao(int index, int tamanhoDimensao){
        for(int i = 0; i < tamanhoDimensao; i++){
            matriz.get(index).add(0); //defalt value 0
        }
        return true;
    }
}
公共类矩阵{
private ArrayList matriz=new ArrayList();
//建造师
公共矩阵(){
}
//建造师
公共矩阵(内部长度){
int c=0;
ArrayList init=新的ArrayList();
而(c<长度){
添加矩阵(初始);
c+=1;
}
}
公共布尔值criaDimensao(int索引,int tamanhoDimensao){
对于(int i=0;i

其思想是在
matriz
中有不同大小的
ArrayList

因为在构造函数中:

ArrayList<Integer> init = new ArrayList<>();
while (c < lenght){
    matriz.add(init);
    c +=1 ;
}
while (c < lenght){
   matriz.add(new ArrayList<Integer>());
   c +=1 ;
}
您将把它添加到
init
,这将反映在整个
mariz

相反,您可以在构造函数中使用如下内容:

ArrayList<Integer> init = new ArrayList<>();
while (c < lenght){
    matriz.add(init);
    c +=1 ;
}
while (c < lenght){
   matriz.add(new ArrayList<Integer>());
   c +=1 ;
}
while(c