列出在Java中使用的LinkedList add方法
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
,它都不会修改已经添加到列表中的值
例如:
objeto.setId=1;
casos.add(objeto);
objeto.setId=2;
casos.add(objeto);
我在打印casos时的期望:
1, 2
我的代码是什么:
2, 2
# 1 楼答案
如果要在每个
casos
中添加相同的对象,请尝试以下操作:# 2 楼答案
在列表中添加相同的
CassosPositives
类实例,在列表中的每个位置都有多个指向相同对象的链接,而每次将类放入列表时都需要创建新的类实例:类casospositive应类似于:
范例 (java 8路)
范例 (java 7路)
# 3 楼答案
小错误。您只创建了一次CasosPossiveis的对象。当java运行此代码时,它会在for循环之前创建对象
现在,当处理for循环时,它将使用同一对象10次。因此具有相同的价值。 所以,对于每次获取新对象,您需要在每次循环运行时创建对象
如果发生这种情况—— 写 CasosPossiveis objeto=新的CasosPossiveis(); 内部为循环
# 4 楼答案
您有一个对象
objecto
,可以多次将其添加到列表中。如果希望列表包含不同的实例,则必须创建新实例: