[英]Why does TransformedCollection not implement hashCode?
我期望兩個相同的轉換到具有相同hashCode
結果對象。 我想使用此屬性來檢查我的對象是否以有意義的方式更改。
不幸的是,Guava的TransformedCollection extends AbstractCollection
(與AbstractList
不同)它不實現hashCode
或equals,而TransformedCollection
本身也沒有這樣的嘗試。
hashCode
嗎? hashCodes
? AbstractCollection
無法解決的方式為TransformedCollection
解決這個問題? 不幸的是,沒有明智的方法來定義Collection.hashCode
。 集合可以是Set
或List
(或其他),並且兩者以不兼容的方式定義hashCode
。
而且,出於同樣的原因,對transformedCollection1.equals(transformedCollection2)
沒有明確的定義。 它可以忽略順序,也可以不忽略(Set或List語義)。 更糟糕的是,返回的Collection
只是一個視圖,而這樣的equals
將是非常低效的。
我建議使用類似ImmutableList.copyOf(transformedCollection)
東西並使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.