gpt4 book ai didi

Java HashSet 包含对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:11:35 27 4
gpt4 key购买 nike

我使用重写的 equals 方法创建了自己的类,该方法只检查名称(类中的属性)是否相等。现在我将该类的一些实例存储在一个 HashSet 中,这样 HashSet 中就没有同名的实例了。

我的问题:如何检查 HashSet 是否包含这样的对象。 .contains() 在这种情况下不起作用,因为它与 .equals() 方法一起使用。我想检查它是否真的是同一个对象。

编辑:

package testprogram;

import java.util.HashSet;
import java.util.Set;

public class Example {
private static final Set<Example> set = new HashSet<Example>();
private final String name;
private int example;

public Example(String name, int example) {
this.name = name;
this.example = example;
set.add(this);
}

public boolean isThisInList() {
return set.contains(this);
//will return true if this is just equal to any instance in the list
//but it should not
//it should return true if the object is really in the list
}

public boolean remove() {
return set.remove(this);
}

//Override equals and hashCode
}

对不起,我的英语水平不是很好。如果您不明白我的意思,请随时再次询问。

最佳答案

在您的情况下,判断对象的特定实例是否包含在 HashSet 中的唯一方法是迭代 HashSet 的内容,并比较对象标识(使用 == 运算符而不是等号( ) 方法).

类似于:

boolean isObjectInSet(Object object, Set<? extends Object> set) {
boolean result = false;

for(Object o : set) {
if(o == object) {
result = true;
break;
}
}

return result;
}

关于Java HashSet 包含对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27238093/

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