我必须复制矩阵并更改新矩阵,但不想更改初始矩阵。我用arraylists的arraylist代表他们。这是我的代码
ArrayList<ArrayList<Integer>> tempMatrix = new ArrayList<ArrayList<Integer>>();
for(ArrayList<Integer> row : matrix) {
for(Integer index : row) {
tempMatrix.get(row).add(index);
}
}
编译器说,为此目的使用get方法是违法的。我还可以做些什么来复制?
答案 0 :(得分:2)
你可以复制整行,省去了很多麻烦:
ArrayList<ArrayList<Integer>> tempMatrix = new ArrayList<ArrayList<Integer>>();
for(ArrayList<Integer> row : matrix) {
tempMatrix.add(new ArrayList<Integer>(row));
}
答案 1 :(得分:1)
尝试:
for(ArrayList<Integer> row : matrix) {
ArrayList<Integer> rowList = new ArrayList<Integer>();
for(Integer index : row) {
rowList.add(index);
}
tempMatrix.add(rowList);
}
答案 2 :(得分:1)
你需要克隆arraylist:
ArrayList<ArrayList<Integer>> tempMatrix = new ArrayList<ArrayList<Integer>>();
for(ArrayList<Integer> row : matrix) {
tempMatrix.add(row.clone());
}
如果您使用新的Arraylist
,那么您确实会有一个新的arraylist
,但它包含的元素将是对作为构造函数参数传递的数组中包含的元素的引用。