如何在 Java 中创建一个没有比较的唯一值的 HashSet

How do I create a HashSet of unique values without comparison in Java

我有一个具有 ~20 个属性的复杂 Java Bean。 在我的业务逻辑中,我生成了大约 10^5 个此 Bean 的唯一实例。

bean 具有复杂且性能高 equals 方法。

我的 API 签名很旧,我只能 return HashSet 数据结构中的数据。

我需要从 unique 实例生成此 HashSet,而无需调用 bean 的 equals 方法来优化流程。

可能吗?

保证HashSet插入的数据事先是唯一的

当两个键具有相同的哈希码时,

IdentityHashMap 使用 == 而不是 equals() 来比较键。

您可以从中创建一个集合:

Set<E> set = Collections.newSetFromMap(new IdentityHashMap<>());