ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-08-26 07:00:46  阅读:139  来源: 互联网

标签:java private-members


我正在循环一些数据,创建一个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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有