私有变量在类之外被修改 – Java
作者:互联网
我正在循环一些数据,创建一个ArrayList< ArrayList< Cell>>每一步.每个Cell类都存储一行和col(以及其他内容).
我的问题是,当我之后调查我的listOfCells时,每个Cell对象都有相同的行(myData的最后一行.这只发生在行中,列应该是它们应该的(也就是说,它们本身是唯一的).可以看出,行正在递增,但是当它正确时,它会更改listOfCells中行的所有值.
我不知道是什么造成了这个.
创建Cell
Cell cell = null;
int row = 0;
int col = 0;
ArrayList<Cell> tmpCellList = new ArrayList<Cell>();
ArrayList<ArrayList<Cell>> listOfCells = new ArrayList<ArrayList<Cell>>();
for (ArrayList<double> eachRow : myData) {
row++;
for (double eachCol : eachRow) {
col++;
cell = new Cell();
cell.setCol(col);
cell.setRow(row);
cell.setValue(eachCol);
tmpCellList.add(cell);
}
listOfCells.add(row-1, tmpCellList);
}
细胞类
public class Cell {
private int row;
private int col;
private double value;
public void setRow(int rowIn) {
this.row = rowIn;
}
public int getRow() {
return row;
}
public void setCol(int colIn) {
this.col = colIn;
}
public int getCol() {
return col;
}
public void setValue(double val) {
this.value = val;
}
public double getValue() {
return value;
}
解决方法:
您的所有行都是相同的ArrayList< Cell>.
因此,它们都包含相同的细胞.
您需要为每一行创建一个新的ArrayList< Cell>().
标签:java,private-members 来源: https://codeday.me/bug/20190826/1727593.html