为什么存储在 arrayList 中的每个对象的内容都具有相同的值?

我有一个简单的代码,通过“for”迭代器将多个对象存储到 ArrayList 中。


@RequestMapping("dataInsert")

public String dataInsert(String pageNum, Model model) {


    Supplier supplier = new Supplier();

    List<Supplier> list = new ArrayList<Supplier>();

    int number = ss.maxNum(supplier);

    for (int i = 0; i < 5; i++) {

        supplier.setNum(number + i);

        supplier.setName("supplier" + i);

        supplier.setDel("n");

        supplier.setAddr("address" + i);


        list.add(supplier);


        System.out.println(i + " : " + supplier);   

    }


    System.out.println(list);

    int result = ss.insertList(list, supplier);


    model.addAttribute("result", result);

    model.addAttribute("pageNum", pageNum);

    return "supplier/Insert";

}

下面的控制台输出显示了对象的迭代数量:


0 : Supplier [num=13, name=supplier0, tel=null, addr=address0, del=n]

1 : Supplier [num=14, name=supplier1, tel=null, addr=address1, del=n]

2 : Supplier [num=15, name=supplier2, tel=null, addr=address2, del=n]

3 : Supplier [num=16, name=supplier3, tel=null, addr=address3, del=n]

4 : Supplier [num=17, name=supplier4, tel=null, addr=address4, del=n]

控制台输出来自:


System.out.println(list);

外面的for语句代表List每个对象显示相同的内容。


[Supplier [num=17, name=supplier4, tel=null, addr=address4, del=n],

Supplier [num=17, name=supplier4, tel=null, addr=address4, del=n],

Supplier [num=17, name=supplier4, tel=null, addr=address4, del=n],

Supplier [num=17, name=supplier4, tel=null, addr=address4, del=n],

Supplier [num=17, name=supplier4, tel=null, addr=address4, del=n]

]

我想要做的是创建一个列表,其中包含具有不同值的对象。我想代码有问题。我认为中的add()方法ArrayList是将参数值附加到现有列表对象。有人知道为什么会这样吗?


catspeake
浏览 283回答 2
2回答

POPMUISE

你一遍又一遍地添加List相同的内容Supplier。这导致Suppliersetter 被重复调用并Supplier在List. 所以每一个Supplier都和最后一个一样。关键是在Supplier每次迭代中创建一个新的并将其添加到List:List<Supplier> list = new ArrayList<Supplier>();int number = ss.maxNum(supplier);for (int i = 0; i < 5; i++) {&nbsp; &nbsp; Supplier supplier = new Supplier();&nbsp; &nbsp; // Supplier setters&nbsp; &nbsp; list.add(supplier);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java