Java 为什么存储在arrayList中的每个对象的内容都有相同的值?
我有一个简单的代码,通过'for'迭代器将多个对象存储到ArrayList中Java 为什么存储在arrayList中的每个对象的内容都有相同的值?,java,list,for-loop,arraylist,Java,List,For Loop,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
@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";
}
控制台输出来自:
System.out.println(list);
在表示列表的for
语句之外,每个对象显示相同的内容
[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]
]
我想做的是创建一个列表,其中包含具有不同值的对象。
我想代码有问题。
我认为ArrayList
中的add()
方法将参数值附加到现有列表对象。有人知道为什么会发生这种情况吗?在列表中只存储一个供应商
对象(添加同一对象5次),然后在循环中不断修改它
您应该为循环的每个迭代创建一个新实例:
List<Supplier> list = new ArrayList<Supplier>();
int number = ss.maxNum(supplier);
for (int i = 0; i < 5; i++) {
Supplier supplier = new Supplier();
supplier.setNum(number + i);
supplier.setName("supplier" + i);
supplier.setDel("n");
supplier.setAddr("address" + i);
list.add(supplier);
System.out.println(i + " : " + supplier);
}
List List=new ArrayList();
int number=ss.maxNum(供应商);
对于(int i=0;i<5;i++){
供应商=新供应商();
供应商设置编号(编号+i);
供应商名称(“供应商”+i);
供应商。setDel(“n”);
供应商地址(“地址”+i);
列表。添加(供应商);
系统输出打印项次(i+“:”+供应商);
}
您一次又一次地将相同的供应商添加到列表中。这将导致反复调用供应商
设置程序,并修改列表中的每个供应商
。因此,每个供应商都与上一个供应商相同
关键是在每次迭代中创建一个新的供应商
,并将其添加到列表中
:
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);
}
List List=new ArrayList();
int number=ss.maxNum(供应商);
对于(int i=0;i<5;i++){
供应商=新供应商();
//供应商设定者
列表。添加(供应商);
}
它可以工作:)thx@ConnorLee你很好,它成功了,谢谢:)
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);
}