请告诉我如何纠正这个问题?我从while循环中添加了一个集合中的同一个对象,它复制了数据。
public class CollectionsFramework {
private String name;
private int id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
private List<CollectionsFramework> listOfString = new ArrayList();
public void setListOfString(List<CollectionsFramework> listOfString) {
this.listOfString = listOfString;
}
public List<CollectionsFramework> getListOfString() {
return listOfString;
}
public static void main(String[] args) {
CollectionsFramework c = new CollectionsFramework();
int i = 0;
while(i<5) {
c.setId(1+i);
c.setName("abc" + i);
c.print();
c.getListOfString().add(c);
i++;
}
for (CollectionsFramework c1 : c.getListOfString()) {
System.out.println(c.print());
}
}
private String print() {
return this.getName() + " " + this.getId() + ";";
}
}
为此,我得到输出为: abc4 5; abc4 5; abc4 5; abc4 5; abc4 5;
虽然它应该是: abc0 1; abc1 2; abc2 3; abc3 4; abc4 5;
答案 0 :(得分:1)
您每次在循环中使用相同的对象,并且每次重写其值时,它将打印已设置的最后一个值。
因此,每次在while
循环内尝试声明一个新对象。
while(i<5) {
CollectionsFramework c = new CollectionsFramework();
// code.
}