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