我有一個簡單的代碼,通過“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是將參數值附加到現有列表對象。有人知道為什么會這樣嗎?
2 回答

POPMUISE
TA貢獻1765條經驗 獲得超5個贊
你一遍又一遍地添加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++) {
Supplier supplier = new Supplier();
// Supplier setters
list.add(supplier);
}
添加回答
舉報
0/150
提交
取消