gpt4 book ai didi

java - 如何定义我自己的元素类以用于 Set

转载 作者:搜寻专家 更新时间:2023-10-31 08:21:10 24 4
gpt4 key购买 nike

我有以下代码:

public class MyElement {
String name;
String type;

MyElement(String name, String type) {
this.name = name;
this.type = type;
}
}

public class Test {

public static void main(String[] args) {
Set<MyElement> set = new HashSet<MyElement>();
set.add(new MyElement("foo", "bar"));
set.add(new MyElement("foo", "bar"));
set.add(new MyElement("foo", "bar"));
System.out.println(set.size());
System.out.println(set.contains(new MyElement("foo", "bar")));
}
}

执行后返回:

3

false

我本以为结果为 1 且为真。为什么我的元素没有被识别为相同,我该如何纠正?谢谢,韦恩。

最佳答案

您需要根据通用契约(Contract)在 MyElement 上实现 equals(Object o)hashCode()。缺少 Set.contains() 将使用比较对象内存地址的默认实现。由于您在 contains 调用中创建了 MyElement 的新实例,因此它返回为 false。

关于java - 如何定义我自己的元素类以用于 Set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5279017/

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