如果对象类型来自已编译的 .class 文件,如何避免在 Set 中存储重复项?
How to avoid storing duplicates in a Set if the objects type comes from a compiled .class file?
我正在尝试将对象存储在 集合 中以避免重复。
因为这个 topic 解释我需要 @Override 两种方法:hashCode() 和 等于(对象对象).
我试图在上面的 Set 中存储的对象类型来自已编译的 .class 文件,它没有 hashCode() 和 equals(Object obj) 方法,或者它是父类继承链(Object除外)。
有没有办法将它们存储在集合中以避免重复?
如果你不能修改对象,那么你可以包装它们。
class EmployeeHolder {
private final Employee employee;
public int hashCode() { ... }
public boolean equals(Object o) {
if (!(o instanceof EmployeeHolder)) return false;
...
}
}
Set<EmployeeHolder> set = new HashSet<>();
我正在尝试将对象存储在 集合 中以避免重复。
因为这个 topic 解释我需要 @Override 两种方法:hashCode() 和 等于(对象对象).
我试图在上面的 Set 中存储的对象类型来自已编译的 .class 文件,它没有 hashCode() 和 equals(Object obj) 方法,或者它是父类继承链(Object除外)。
有没有办法将它们存储在集合中以避免重复?
如果你不能修改对象,那么你可以包装它们。
class EmployeeHolder {
private final Employee employee;
public int hashCode() { ... }
public boolean equals(Object o) {
if (!(o instanceof EmployeeHolder)) return false;
...
}
}
Set<EmployeeHolder> set = new HashSet<>();