gpt4 book ai didi

java - HashSet 中的 equals 方法

转载 作者:行者123 更新时间:2023-12-01 18:34:56 24 4
gpt4 key购买 nike

我正在尝试理解 TreeSet。我创建了 Employee 对象并尝试将其添加到 TreeSet 中。为了实现这一点,我创建了名为 sortName 的类,它根据名称对员工对象进行排序。我也写了一个 equals 方法(只是为了理解执行流程)。我读到,在 TreeSet 中,要在某些排序中添加元素,我们必须实现比较器接口(interface)并覆盖两个方法(比较和等于),当然 equals 是可选的。当我尝试运行它的程序时,我发现 equals 方法从未被调用,这是为什么?

我们来比较一下 HashSet 和 TreeSet。在HashSet中,当hashCode相同时,它检查equals方法,否则不检查。我有兴趣知道 TreeSet 是如何工作的?谁能给我一个例子,其中甚至为 TreeSet 调用 equals 方法?

public int compare(Object Obj1, Object Obj2) {
System.out.println("compare");
if (Obj1 instanceof Employee19 && Obj2 instanceof Employee19) {
Employee19 emp1=(Employee19) Obj1;
Employee19 emp2=(Employee19) Obj2;

return emp1.sname.compareTo(emp2.sname);
}
return 0;
}

public boolean equals(Object obj){
System.out.println("equals");
return true;
}

我什至检查了这个链接,但这不是我要找的...... HashSet with two equals object?

最佳答案

TreeSet不需要使用equals方法,因为它从 Comparator 获取所需的所有信息。的compare方法(或 compareTo 方法,如果它依赖于其元素 Comparable )。如果适当的方法返回0,则无论哪种方式都可以判断元素是否等效。 .

关于java - HashSet 中的 equals 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22410163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com