为什么我的HashSet中有重复数据?

Tweakdev:

我正在尝试在Java中操作HashSet。我看到,通常情况下,HashSet中没有重复项吗?

这是我的代码

 public class A{
    private int elem;

    public A(int elem) {
        this.elem = elem;
    }   
}

在另一堂课

import java.util.HashSet;
import java.util.Iterator;

public class B{

    private String name;
    private HashSet<A> listeA;


    public static void main(String[] args){
        HashSet<A> a = new HashSet<A>();

        B s = new B("B",a);
        A l1 = new A(15);
        A l2 = new A(14);
        A l3 = new A(15);

        a.add(l1);
        a.add(l2);
        a.add(l3);

        s.displayHashset();

    }

因此,如果HashSet不允许重复,为什么在执行代码后会有这个:

15 
15 
14

我不明白在我的HashSet中如何接受第二个“ 15”。

感谢您的答复。

user1121883:

您没有覆盖equals()hashcode()HashSet根据equals方法检查一个对象是否等于另一个。另外,为了不进行太多比较,它会将具有相等哈希码的对象组合在一起。

请注意,通常有必要在每次重写此方法时都重写hashCode方法,以便维护hashCode方法的常规约定,该约定规定相等的对象必须具有相等的哈希码。

等于和哈希码的生成版本:

public class A{
    private int elem;

    public A(int elem) {
        this.elem = elem;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        A a = (A) o;
        return elem == a.elem;
    }

    @Override
    public int hashCode() {
        return Objects.hash(elem);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么要在拥有字符串池的情况下进行字符串重复数据删除

为什么我在无穷循环代码中有不同的结果

串联而没有重复数据帧

Python为什么我在RSA加密中有特殊字符

为什么我的部署中没有数据,但预览中有所有数据?

为什么我的API调用应该在随机的情况下接收重复数据?

为什么我在此删除操作中有例外?

为什么我在C / MEX中有内存泄漏?

为什么我的主目录中有grub文件?

为什么当我的表不为真时,我仍然收到错误消息,说表中有重复的字段?

为什么在我的排序实现中有NullPointerException?

为什么我的应用程序中有很多图标?

我在for和stream中有不同的结果,为什么?

为什么我的MDC SLF4J中有两个请求有重复的ID?

为什么我在json中有双括号

为什么我应该在NoSql数据库(MongoDB)中有多个集合

为什么我的脚本中有“找不到命令”?

为什么我的zsh历史记录中有重复项?

为什么我的数组的输出中有空格

为什么我不能对我的数组进行排序和重复数据删除?

如何避免在我的数据库中有重复的数据?

为什么我的 vba 代码中有“错误 424”?

为什么在尝试删除某些内容时会不断从 Firebase 获取重复数据?

我在 mysql 工作台中有 sql 数据 17949366,我尝试编写查询以查找重复数据

python 重复数据删除库中有任何类型可以跨电话匹配

为什么我们在 Anaconda 中有不同的环境?

当数据框中有数据时,为什么 R 给我 NA 值?

网页抓取:列表中有字典问题,json 有重复数据

为什么我的 SVG feTurbulence 输出中有细黑线?