在Java中将项添加到List

时间:2017-06-11 16:40:55

标签: java

我正在向List添加项目,但之后的项目总是会在迭代后被覆盖。

List<CartPojo> cartLists = new ArrayList<CartPojo>();
CartPojo cartItem = new CartPojo();

for(int k=0; k<2; k++){
   cartItem.setItemName("name_"+k);
   cartLists.add(cartItem);
}

model.addAttribute("cartLists", cartLists);

这会输出: name_1,name_1

预期输出: name_0,name_1

6 个答案:

答案 0 :(得分:1)

目前,您在整个迭代过程中对同一个实例进行操作,而不是应该在循环中实例化对象,即:

for(int k=0; k<2; k++){
   CartPojo cartItem = new CartPojo();
   cartItem.setItemName("name_"+k);
   cartLists.add(cartItem);
}

答案 1 :(得分:0)

每次都要继续修改同一个对象。你需要在循环中创建Object。

for(int k=0; k<2; k++){
   CartPojo cartItem = new CartPojo();
   cartItem.setItemName("name_"+k);
   cartLists.add(cartItem);
}

答案 2 :(得分:0)

你没有宣布新的&#34; CartPojo&#34;实例,因此每次在cartItem上执行某些操作时,每次操作时它都是相同的对象。

答案 3 :(得分:0)

  

只需输入Cartpojo cartItem = new CartPojo();在for循环中

列出cartLists = new ArrayList();

for(int k = 0; k <2; k ++){

CartPojo cartItem = new CartPojo();

cartItem.setItemName( “名_” + K);

cartLists.add(cartItem);

}

答案 4 :(得分:0)

你只需要在循环中每次都创建对象

List<CartPojo> cartLists = new ArrayList<CartPojo>();


for(int k=0; k<2; k++){
   CartPojo cartItem = new CartPojo();
   cartItem.setItemName("name_"+k);
   cartLists.add(cartItem);
}

model.addAttribute("cartLists", cartLists);

和平

答案 5 :(得分:0)

在所有迭代中使用相同的对象。 您应该在每次要创建new对象时创建一个实例(使用CartPojo运算符)。

此外,您应该在CartPojo中提供构造函数:

for(int k=0; k<2; k++){
    CartPojo cartItem = new CartPojo("name_"+k);
    cartLists.add(cartItem);
}

它使代码更清晰。