为什么Java代码会返回false
?
List list = new ArrayList();
int[][] arr = {{-1, -1, 2}, {-1, 0, 1}};
list.add(arr[0]);
list.add(arr[1]);
int[] temp = {-1, 0, 1};
return list.contains(temp);
当列表中的元素是数组时,如何删除副本?
感谢您的回复。
答案 0 :(得分:4)
数组不会覆盖Object
equals
的实现,因此,list.contains()
使用equals
来确定元素是否出现在List
,只有在搜索添加到List
的确切数组对象时才会返回true。因此list.contains(arr[1])
将返回true,但list.contains(temp)
赢了,因为temp
和arr[1]
是不同的对象(即使它们包含完全相同的元素)。
您可以使用List<List<Integer>
代替List<int[]>
,以使list.contains()
按预期运行(因为List
接口的常见实现会覆盖{{ 1}}&#39; s Object
)。