将相同的对象添加到多个arraylists

我正在开发一款游戏,并注意到向两个arraylists添加一个对象然后更新其中一个并不会更新另一个。 有可能解决这个问题吗?

我有一个列表,列出了渲染时循环的所有图块。 但我还想在我的库存类中找到一个插槽列表(扩展Tile),而不是循环所有游戏磁贴以获得库存插槽。

我有两个列表:Game.tiles和Inventory.slots

这是我添加插槽(Inventory类)的地方:

for(int i = 0; i< 16; i++){ Slot slot = new Slot(); Game.tiles.add(slot); slots.add(slot); } 

这是我修改插槽(库存类)的地方:

 for(int i = 0; i< 16; i++){ slots.get(i).visable = false; } 

问题是插槽列表中的插槽的数据更新,但Game.tiles列表中的相同插槽没有。

完整库存类: http : //pastebin.com/KS5BNB3F

将对象添加到两个不同的ArrayList ,实际上只添加对该对象的引用。 因此,如果您修改对象,它将同时反映在两个列表中。 请参阅以下代码段:

 public class Clazz{ private Integer d = 0; public static void main(String[] args) throws Exception { Clazz obj = new Clazz(); List list1 = new ArrayList(); List list2 = new ArrayList(); list1.add(obj); list2.add(obj); obj.d = 15; System.out.println(list1.get(0).d); //prints 15 System.out.println(list2.get(0).d); //prints 15 } } 

创建一个对象实例,将其添加到两个数组中。 那些数组将具有相同的引用。 这意味着更新对象将导致在两个arrays中更新它。