gpt4 book ai didi

java - 如何更改 2d ArrayList 中某些 ArrayList 的大小?

转载 作者:行者123 更新时间:2023-11-30 06:00:23 24 4
gpt4 key购买 nike

我有这个类来实现 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 ;
}

您继续在matriz 的所有索引中添加对相同 ArrayList 的引用。所以当你打电话时:

matriz.get(index).add(0);

您将把它添加到 init 中,这将反射(reflect)在整个 mariz

相反,您可以在构造函数中使用类似的内容:

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

关于java - 如何更改 2d ArrayList 中某些 ArrayList 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52357341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com