如何在 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<>());
我有一个具有 ~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<>());