2017-11-25 149 views
0
LinkedList<CasosPossiveis> casos = new LinkedList<>(); 
CasosPossiveis objeto = new CasosPossiveis(); 

for (int i=0; i<10; i) { 
    //modifying objeto values here 
    casos.add(objeto); 
} 

每次我修改objeto值时,casos中的每个位置也正在修改中。我相信casos.add(objeto)正在使用objeto的参考。我需要的是每当我添加一个新对象到casos并修改objeto时,它不会修改已经添加到列表中的值。在Java中使用LinkedList添加方法

例:

objeto.setId=1; 
casos.add(objeto); 
objeto.setId=2; 
casos.add(objeto); 

我期待什么,当我打印casos:

1, 2 

什么我的代码被priting:

2, 2 
+1

在循环内部创建对象。 –

回答

2

你有一个对象,objecto,这你多次添加到列表中。如果你想在列表中包含不同的情况下,你必须创造新的:

for (int i=0; i<10; i) { 
    // Use a new instance in every iteration 
    CasosPossiveis objeto = new CasosPossiveis(); 

    //modifying objeto values here 

    casos.add(objeto); 
} 
4

您在每casos添加相同的对象,试试这个:

LinkedList<CasosPossiveis> casos = new LinkedList<>(); 

    for (int i=0; i<10; i) { 
    CasosPossiveis objeto = new CasosPossiveis(); 
    //modifying objeto values here 
     casos.add(objeto); 
} 
1

小错误。您只创建一次CasosPossiveis的对象。当java运行这段代码时,它会在for循环之前创建对象。

现在当for循环被处理时,它使用同一个对象10次。因此相同的价值。 因此,每次获取新对象时,都需要在每次循环运行时创建对象。

为了实现这一点 写入 CasosPossiveis objeto = new CasosPossiveis(); 内部for循环。

0

您添加列表CassosPositives类的同一个实例,你必须在列表中的每个位置多次链接到同一个对象,而不是你需要创建新的类实例每次你把它放在上榜时间:

类CassosPositives应该是这样的:

public class CassosPositives { 
    private int id; 

    CassosPositives(int id) { 
     this.id = id; 
    } 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

} 

例 (java的8路)

 // create list of CassosPositives 
     List<CassosPositives> casos = IntStream.iterate(0, i -> i + 1) 
               .limit(10) 
               .map(i -> new CassosPositives(i)) 
               .collect(Collectors.toList()); 
     //print list of CassosPositives 
     casos.forEach(caso -> System.out.println(caso.getId()));  

实施例 (java 7 way)

// create list of CassosPositives 
    List<CassosPositives> casos = new ArrayList<>(); 
    for (int i = 0; i < 10; i++) { 
     casos.add(new CassosPositives(i)); 
    } 

    //print list of CassosPositives 
    for(CassosPositives caso : casos) { 
     System.out.println(caso.getId()); 
    }