gpt4 book ai didi

Java:Set 集合,其中项目由其类标识

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:19:39 26 4
gpt4 key购买 nike

我需要 Set 集合,其中的项目将由项目类标识。类似于 ReferenceIdentityMap来自 Appache Collections ,但在类范围内,即同一类的两个不同实例必须在此集合中标识为相同。

你知道,这违反了equals()/hashCode()身份原则,但偶尔使用它是有道理的。

我已经用 Map<Class<? extends E>, E> 在简单的类支持中完成了这个, 但由于简单性,它没有实现 Set<E> .可能有一个更优雅的解决方案,任何 Set<E> 的装饰器会很棒。

是否有任何此类集合的实现(Apache/Google/something/... Collections)?

最佳答案

您希望为您的集合成员覆盖 equals()/hashCode() 的含义。我想,最简洁的方法是使用包装器类:

class Wrapper<E> {

private final E item;

Wrapper(E item) {
this.item = item;
}

E getItem() {
return item;
}

public boolean equals(Object o) {
if (!(o instanceof Wrapper)) {
return false;
}
return getClass().equals(o.getClass());
}

public int hashCode() {
return getClass().hashCode();
}

}

您将创建一个 Set<Wrapper<E>>那么。

关于Java:Set<E> 集合,其中项目由其类标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2446466/

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