【问题标题】:How do I create a HashSet of unique values without comparison in Java [closed]如何在Java中创建唯一值的HashSet而不进行比较[关闭]
【发布时间】:2021-03-09 22:05:47
【问题描述】:

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

bean 有一个复杂且性能代价高昂的 equals 方法。

我的 API 签名很旧,我只能以 HashSet 数据结构返回数据。

我需要在不调用 bean 的 equals 方法的情况下从 unique 实例生成此 HashSet 以优化流程。

有可能吗?

保证,HashSet中插入的数据是唯一的。

【问题讨论】:

  • 实际上,这个问题缺少一些代码,但正如接受的答案所示,它非常集中,可以重新打开。

标签: java performance hashset


【解决方案1】:

IdentityHashMap 使用== 而不是equals() 来比较其中两个具有相同哈希码的键。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    • 2013-10-18
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多