【问题标题】:saving objects in collection from a loop从循环中保存集合中的对象
【发布时间】:2014-05-09 14:50:12
【问题描述】:

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

【问题讨论】:

    标签: java list generics collections arraylist


    【解决方案1】:

    您每次在循环中都使用相同的对象,并且每次您覆盖它的值时,它都会打印已设置的最后一个值。

    所以尝试每次在while 循环中声明一个新对象。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      • 2021-07-14
      • 2020-08-26
      • 1970-01-01
      • 2018-06-20
      • 2016-05-15
      • 1970-01-01
      相关资源
      最近更新 更多