java - 从循环中保存集合中的对象

标签 java list generics collections arraylist

请告诉我如何解决这个问题?我在 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;

最佳答案

您每次在循环内都使用相同的对象,并且每次您都覆盖其值,因此它将打印最后设置的值。

因此尝试每次在 while 循环内声明一个新对象。

while(i<5) {
    CollectionsFramework c = new CollectionsFramework();
    // code.
}

关于java - 从循环中保存集合中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22741687/

相关文章:

java - Hibernate二级缓存配置

java - 如何使用 maven 和 jboss-as-maven-plugin 运行 JBoss 6.2 EAP 服务器?

java - Spring - 如何在声明式事务管理回滚期间收集信息

python - 将生成列表中的所有数字乘以递增的数字以获得一个值 python

java - 泛型和匿名类(错误或功能?)

c# - 使用反射在运行时创建动态泛型

java - 可选择对流应用过滤器

list - Prolog:过滤列表?

python - 根据项目条件在两个列表上查找索引

c++ - 默认参数和泛型类