Java 如何检查两个集合是否包含相同的对象

Java 如何检查两个集合是否包含相同的对象,java,Java,我有一个类IntegerType: public class IntegerType implements DataType { private int value; public IntegerType(int value) { this.value = value; } @Override public NativeType nativeType() { return NativeType.INTEGER;

我有一个类
IntegerType

public class IntegerType implements DataType {

    private int value;

    public IntegerType(int value) {
        this.value = value;
    }

    @Override
    public NativeType nativeType() {
        return NativeType.INTEGER;
    }

    @Override
    public int size() {
        return Integer.BYTES;
    }

    @Override
    public Integer value() {
        return this.value;
    }

    @Override
    public boolean equals(Object o) {
        boolean result = false;
        if (o == null || o.getClass() != getClass()) {
            result = false;
        } else {
            IntegerType integerType = (IntegerType) o;
            if (this.value == integerType.value()) {
                result = true;
            }
        }
        return result;
    }
}
我主要想根据实例是否具有相同的
。value
参数来检查包含
IntegerType
实例的两个集合是否相同:

IntegerType int1 = new IntegerType(1);
IntegerType int2= new IntegerType(1);
Set<IntegerType> set1 = new HashSet<>();
set1.add(int1);
Set<IntegerType> set2 = new HashSet<>();
set2.add(int2);

System.out.println(set1.equals(set2));
IntegerType int1=新的IntegerType(1);
IntegerType int2=新的IntegerType(1);
Set set1=新的HashSet();
set1.add(int1);
Set set2=新的HashSet();
set2.add(int2);
System.out.println(set1.equals(set2));

但是,运行上述代码会打印出
false
。据我所知,它应该打印
true
,因为
int1.equals(int2)
true
。我在这里遗漏了什么?

顾名思义,
HashSet
要求您重写
hashCode
方法,该方法用于确定两个对象是否可能相等。下面是一个可能的实现:

@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + value;
    return result;
}