在java中更新类的ArrayList中的类的单个变量

时间:2014-04-05 15:48:10

标签: java arraylist

我有一个类组件:

public class Components {

    int numberOfNets; 
    String nameOfComp;
    String nameOfCompPart;
    int numOfPin;

    public components(int i, String compName, String partName, int pin) {
        this.numberOfNets = i;
        this.nameOfComp = compName;
        this.nameOfCompPart = partName; 
        this.numOfPin = pin;
    }

}

在另一个类中,我创建了一个Components类的arraylist:

List<Components> compList = new ArrayList<Components>();

稍后在代码中,我将以这种方式添加List中的元素:

compList.add(new Components(0,compName,partName,0));

请参阅,此类numberOfNetsnumOfPin变量在Components类中以0值启动。但是这些值在后面的代码部分中计算/递增,因此我需要在每个列表元素中仅更新这两个变量的新值。现在从ArrayList doc我得到了使用set操作的索引更新列表元素的想法。但我很困惑如何设置/更新类的ArrayList中的类的特定变量。我只需要更新这两个提到的变量,而不是更新Components类中的所有四个变量。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:4)

您应该将getter / setter添加到组件类中,以便外部类可以更新组件的成员

public class Components {

    private int numberOfNets; 
    private String nameOfComp;
    private String nameOfCompPart;
    private int numOfPin;

    public components(int i, String compName, String partName, int pin) {
        setNumberOfNets(i);
        setNameOfComp(compName);
        setNameOfCompPart(partName); 
        setNumOfPin(pin);
    }

    public void setNumberOfNets(int numberOfNets) {
        this.numberOfNets = numberOfNets;
    }

    // Similarly other getter and setters
}

您现在可以使用以下代码修改任何数据,因为get()将返回对原始对象的引用,因此修改此对象将在ArrayList中更新

compList.get(0).setNumberOfNets(newNumberOfNets);

答案 1 :(得分:2)

示例代码。

public class Main {

    public static void main(String[] args) {

        List<Components> compList = new ArrayList<Components>();

        compList.add(new Components(0, "compName", "partName", 0));

        System.out.println(compList.get(0).toString());

        compList.get(0).numberOfNets = 3;
        compList.get(0).numOfPin = 3;

        System.out.println(compList.get(0).toString());     
    }   

}

你的班级。

public class Components {

    int numberOfNets;
    String nameOfComp;
    String nameOfCompPart;
    int numOfPin;

    public Components(int i, String compName, String partName, int pin) {
        this.numberOfNets = i;
        this.nameOfComp = compName;
        this.nameOfCompPart = partName;
        this.numOfPin = pin;
    }

    public String toString() {

        return this.numberOfNets + " " + nameOfComp + " " + nameOfCompPart
            + " " + numOfPin;
    }

}

输出:

  

0 compName partName 0

     

3 compName partName 3