【问题标题】:Duplicate int[] added in a hashset?在哈希集中添加了重复的 int[]?
【发布时间】:2014-09-27 11:09:02
【问题描述】:

我刚刚学习了 JAVA,但我对这段代码有疑问:

HashSet myHashSet = new HashSet();

int[] tab1 = new int[] {0,0};
int[] tab2 = new int[] {0,0};

myHashSet.add(tab1);
myHashSet.add(tab2);

现在我的HashSet 包含{{0;0};{0;0}}!在这种情况下,我怎样才能简单地避免重复? 我以为HashSet 不允许重复。

【问题讨论】:

标签: java int duplicates add hashset


【解决方案1】:

HashSet 不允许基于hashCodeequals 方法进行重复,但数组不会覆盖此类方法,因此即使您有两个内容相同的数组,它们也不是 相同 数组,因此它们将被允许在Set 中。

请改用List<Integer>。请注意 Integer 的用法,而不是 int,因为泛型不支持原始类型。

【讨论】:

  • 另一个更有效的选择是将每个 int 数组包装在 IntBuffer 中。
【解决方案2】:

两个数组,即使它们包含相同的元素,也可能不相等,因为相等被定义为非基元的引用相等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 2011-06-27
    • 2016-06-15
    相关资源
    最近更新 更多