以下是代码示例:
static void findSubsets (ArrayList<Integer> numbers, int amount, int index)
{
ArrayList <Integer> numbersCopy = new ArrayList<Integer>(numbers.size());
Collections.copy(numbersCopy, numbers);
}
我遇到了这个错误:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Source does not fit in dest
at java.util.Collections.copy(Collections.java:548)
at backtracking2.Main.findSubsets(Main.java:61)
为什么?
toArray
和Arrays.copyOf
时,会对列表进行深复制。在执行numbersCopy = new ArrayList<Integer>(numbers)
后,修改任何一个列表都不会影响另一个列表。这显然会使构造函数的目的失去意义(而且它使用的是Collection
而不是List
)。 - pickypgInteger
)的情况下,浅拷贝和深拷贝之间在功能上没有区别。 - paxdiablo