gpt4 book ai didi

java - 优化 equals() 方法

转载 作者:搜寻专家 更新时间:2023-10-31 08:06:15 27 4
gpt4 key购买 nike

equals() 方法(就此而言,还有 compareTo() 方法)可能成为性能热点(例如在高流量的 HashMap )。我想知道人们在证明有必要时采用了哪些技巧来针对这些情况优化这些方法。

例如,IntelliJ IDEA 生成以下内容:

public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;

...
}

您还遇到了什么可以作为编写性能良好的 equals() 方法的指南?

最佳答案

一些不一定特定于equals()的一般思想

  • 尽早失败。与您发布的代码段类似,首先从最广泛的排除标准开始,然后变得更细粒度,以便该方法可以尽快返回
  • 只比较相等所需的属性。我有时看到人们比较一个类提供的每一条信息,即使只有少数属性实际上对两个类实例的相等性起到语义作用。这当然在很大程度上取决于您的类(class)和设计
  • 尽可能避免相等递归。根据您比较的类属性的种类,您可能会陷入这样的境地:对您自己或其他对象递归调用 equals(),这可能会产生隐藏的性能影响

除了性能方面的考虑,别忘了equals API contract确保你的相等性是自反对称传递一致并且总是覆盖hashcode( ) 同样,当您覆盖 equals() 时。

关于java - 优化 equals() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1162583/

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