当前位置: 首页 > 知识库问答 >
问题:

整数对添加到哈希集java[重复]

孙嘉悦
2023-03-14

我设置整数对类如下:

public class pair{
    int a;
    int b;
    pair(int p,int q){
        this.a=p;
        this.b=q;
    }
}

当我将它们添加到hashset中时,没有重复:

HashSet<pair> set=new HashSet<pair>();
        pair temp=new pair(3,5);
        set.add(temp);
        pair temp1=new pair(3,5);
        set.add(temp1);
        for(pair p:set){
            System.out.println(p.a+"  "+p.b);
        }

但它给了我这样的输出:

3  5
3  5

我应该编辑什么以使哈希集中没有重复项?

共有3个答案

唐晗昱
2023-03-14

您应该覆盖类的hashCodeequals方法才能使其工作。这样做是为了尊重Java中对象的hashCode和equals契约。

鲜于华容
2023-03-14

您需要重写对类的equals方法,以专门查看每一对并查看它们是否匹配。

编辑:是,并且hashcode方法也必须被重写

陆畅
2023-03-14

您必须做两件事:

  1. 覆盖equals()
  2. 覆盖hashCode()

正如hashCode()的javadoc告诉您的,它必须与equals()一致,即如果两个对象相等,它们应该具有相同的hashCode。对于两个不相等的对象,可以使用相同的哈希代码

像这样的东西:

public class pair{
    int a;
    int b;
    pair(int p,int q){
        a=p;
        b=q;
    }
    public boolean equals(Object o) {
        if (o instanceof Pair) {
            Pair p = (Pair)o;
            return p.a == a && p.b == b;
        }
        return false;
    }
    public int hashCode() {
        return new Integer(a).hashCode() * 31 + new Integer(b).hashCode();
    }
}
 类似资料:
  • 我有一个Employee类有2个属性id和name。我正在重写hashcode和equals方法,如下所示。 Employee.java: 现在我有了一个测试类,我正在创建一个名为“Chris Gayle”的employee类的对象,并将其添加到HashSet中。之后,我将这个现有的employee对象的名称修改为“Kieron Pollard”,并将这个修改后的employee对象再次添加到Ha

  • 问题内容: 基本类型(例如int)的哈希码是什么? 例如,假设num是一个整数。 问题答案: 对于一个最自然的选择是使用本身。一个更好的问题是,用什么的的,因为它不适合的尺度的哈希码。您的最佳解决方案以及所有相关问题将是有效的Java。

  • 我想获取一个Javascript对象并将其转换为哈希数组。 以下操作仅获取对象的一个元素并将其转换为数组: 返回: 但是,当我试图创建散列元素来组成数组时,出现了一个错误: 返回: 我做错了什么?

  • 问题内容: 我正在尝试创建一个哈希表,如下所示: 但是我在int和byte上都收到一个错误,说“此令牌后应有尺寸”。 如果我使用类似: - 一切都很好。有人可以解释为什么吗? 谢谢。 问题答案: 在Java的核心集合类中,您只能存储引用类型(扩展java.lang.Object的对象)。您 不能 存储诸如和的基元。请注意,like数组不是原始数组,而是引用类型。 如@Giuseppe所述,您可以这

  • 如果我在hashmap中输入一个键和值,并且基于键hashcode生成的索引大于15,并且映射大小仍然小于阈值(即12),会发生什么? 提前谢谢。

  • 问题内容: 我这里有使用struts2-jquery插件的代码 当我单击其内容时,URL会更改为类似的内容,而URL中没有任何变化。它仍然保持不变,我想要的是当我单击链接时会发生类似的情况。当我运行代码时,锚标记被翻译成这样 有了给定的内容,我该如何在网址中添加哈希? 问题答案: 这是一个工作示例(不考虑Struts2):