gpt4 book ai didi

java - 为什么 TransformedCollection 没有实现 hashCode?

转载 作者:搜寻专家 更新时间:2023-11-01 01:22:45 25 4
gpt4 key购买 nike

我希望对具有相同 hashCode 的结果对象进行两次相同的转换。我想使用这个属性来检查我的对象是否以有意义的方式发生了变化。

不幸的是,Guava 的 TransformedCollection extends AbstractCollection(与 AbstractList 不同)没有实现 hashCode 或 equals,以及 TransformedCollection 本身不做这样的尝试。

  • 难道我们不能根据迭代器的顺序或类似的返回值来计算一个hashCode吗?
  • 还是不能保证相同的hashCodes
  • 也许我们可以用 AbstractCollection 无法解决的方式为 TransformedCollection 解决这个问题?

最佳答案

不幸的是,没有定义 Collection.hashCode 的合理方法。集合可以是 SetList(或其他),两者以不兼容的方式定义 hashCode

此外,出于同样的原因,transformedCollection1.equals(transformedCollection2) 没有合理的定义。它可以忽略顺序,也可以不忽略(Set 或 List 语义)。更糟糕的是,返回的 Collection 只是一个 View ,这样的 equals 会非常低效。

我建议使用类似 ImmutableList.copyOf(transformedCollection) 的东西并使用它。

关于java - 为什么 TransformedCollection 没有实现 hashCode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12094202/

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