添加到检索到的ArrayLists

时间:2013-07-22 15:16:01

标签: java multidimensional-array arraylist indexing

这是

waves.get(selectedWave - 1).add(selectedMonster + selectedMosnterLevel);

wave是一个

ArrayList<ArrayList<Integer>>

表示它包含其他整数列表。我的问题是,当我通过调用

检索特定的整数列表时
waves.get(index)

然后向其添加一个Integer值

waves.get(index).add(anInt)

它为每个列表添加“anInt”,它存在于“wave”列表中。这真的是它的工作原理,或者我可能会在我的代码中的其他地方搞砸了。

1 个答案:

答案 0 :(得分:1)

  

它为每个列表添加“anInt”,它存在于“wave”列表中。

我能想到的唯一合理的原因是添加到List<Integer>的所有List<List<Integer>>引用都指向同一个List<Integer>对象。以下代码将导致此行为:

List<List<Integer>> waves = new ArrayList<>();
List<Integer> list1 = new ArrayList<>();
List<Integer> list2 = list1;
waves.add(list1);
waves.add(list1);
waves.add(list2);