java - 如何检查HashSet中是否已经存在对象?

标签 java set

这个example让它看起来很简单:

HashSet<Integer> hSet = new HashSet<Integer>();

hSet.add(new Integer("1"));
hSet.add(new Integer("2"));
hSet.add(new Integer("3"));

System.out.println(hSet.contains(new Integer("3")));

true

但是当我在 Movie 对象上使用它时(我想检查):

Set<Movie> hSet = new HashSet<Movie>();

hSet.add(new Movie(222, "Lord of the Rings", "something"));
System.out.println(hSet);

System.out.println(hSet.contains(new Movie(222, "Lord of the Rings", "something")));

false

hSet 打印显示:

[id: 222name: Lord of the Rings]

我没有看到添加新整数或向列表添加新电影对象有什么区别。那么为什么我的示例不起作用?

//编辑。

如果有人正在寻找好的引用,this helped me out .

最佳答案

您需要重写 Movie 类中的 hashcodeequals 方法。

在哈希集中,每当我们添加对象时,在添加对象之前,它都会通过覆盖哈希码来检查对象的哈希码值 如果计算出的 hashcode 值在集合中已经可用,那么它将调用 equals 方法并检查我们要添加的对象是否与集合中已经可用的对象相等。 如果对象相等,则不会将其添加到集合中,否则它将将该对象添加到集合中。

关于java - 如何检查HashSet中是否已经存在对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47640445/

相关文章:

java - 为什么集合的输出与列表相同。我认为这会有所不同,因为集合是无序的

javascript - 链接 JS Set 方法会导致 TypeError

Java 如何查找特定字符串后面的特定行?

循环200到205的Python整数

c++ - 不能迭代集合

java - 使用 MPI 函数运行 Java 代码

java - 如何将值添加到 Map 中的 Set?

java - Gradle : one jar per classes directory

java - HTTP 多部分和分块可以共存吗?

java - 我如何阅读 Java 文档?