我希望对具有相同 hashCode
的结果对象进行两个相同的转换。我想使用这个属性来检查我的对象是否以有意义的方式改变了。
不幸的是, Guava 的 TransformedCollection extends AbstractCollection
(与 AbstractList
不同)没有实现 hashCode
或 equals,并且 TransformedCollection
本身没有这样的尝试。
hashCode
吗? hashCodes
? TransformedCollection
无法解决的方式为 AbstractCollection
解决这个问题? 最佳答案
不幸的是,没有定义 Collection.hashCode
的合理方法。集合可以是 Set
或 List
(或其他东西),两者以不兼容的方式定义 hashCode
。
此外,出于同样的原因, transformedCollection1.equals(transformedCollection2)
没有合理的定义。它可以忽略顺序,也可以不忽略(设置或列表语义)。更糟糕的是,返回的 Collection
只是一个 View ,这样的 equals
会非常低效。
我建议使用类似 ImmutableList.copyOf(transformedCollection)
的东西并使用它。