我有这个课程来实现2d ArrayList
。我希望方法criaDimensao()
仅将值放在ArrayList
内的matriz
索引位置,但它将值保持在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;
}
}
这个想法是在
ArrayList
内部具有不同大小的matriz
; 最佳答案
因为在构造函数中:
ArrayList<Integer> init = new ArrayList<>();
while (c < lenght){
matriz.add(init);
c +=1 ;
}
您继续在
ArrayList
的所有索引中添加对同一matriz
的引用。因此,当您致电:matriz.get(index).add(0);
您将其添加到
init
,这将反映在整个mariz
相反,您可以在构造函数中包含以下内容:
while (c < lenght){
matriz.add(new ArrayList<Integer>());
c +=1 ;
}
关于java - 如何更改二维ArrayList中某些ArrayList的大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52357341/