【问题标题】:How to remove duplicate in a list while the element is an array? [duplicate]当元素是数组时如何删除列表中的重复项? [复制]
【发布时间】:2017-07-25 09:07:03
【问题描述】:

为什么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);

而当列表中的元素是数组时,那我该如何去除重复呢?

感谢您的回复。

【问题讨论】:

  • 如果你真的想让 contains 工作,你需要在你的自定义数组列表上使用可比较的。你需要创建一个新列表并循环遍历旧列表或将所有内容放在哈希图中

标签: java


【解决方案1】:

数组不会覆盖Objectequals 的实现,所以,由于list.contains() 使用equals 来确定元素是否出现在List 中,它只会在你是搜索您添加到List 的确切数组对象。因此list.contains(arr[1]) 将返回true,但list.contains(temp) 不会,因为temparr[1] 是不同的对象(即使它们包含完全相同的元素)。

您可以使用List<List<Integer> 而不是List<int[]> 以使list.contains() 按您预期的方式运行(因为List 接口的常见实现会覆盖Objectequals)。

【讨论】:

    猜你喜欢
    • 2018-11-04
    • 2022-08-11
    • 2017-02-23
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    相关资源
    最近更新 更多