私有变量在类之外被修改 - Java

时间:2012-08-01 14:02:06

标签: java private-members

我正在循环浏览一些数据,每步创建一个ArrayList<ArrayList<Cell>>。每个Cell类都会存储rowcol(以及其他内容)。

我的问题是,当我之后调查listOfCells时,每个Cell对象都有相同的行(myData的最后一行。这只发生在row,列应该是它们应该的(也就是说,它们本身是唯一的。)据我所知,row正在递增,但是当它确实增加时,它会改变rowlistOfCells的所有值。 {1}}。

我不知道造成这种情况的原因。

创建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);
 }

Cell Class

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;
    }

1 个答案:

答案 0 :(得分:6)

您的所有行都是相同的ArrayList<Cell> 因此,它们都包含相同的细胞。

您需要为每一行创建new ArrayList<Cell>()