【发布时间】:2018-03-27 22:03:23
【问题描述】:
Sets.SetView.union()(以及intersection()、difference() 和symmetricDifference())的番石榴JavaDocs 提到“等价关系”:
如果
set1和set2是基于不同等价关系的集合(如HashSet、TreeSet和IdentityHashMap的Map.keySet()都是),则结果未定义。
我很难理解那句话的意思。
词汇表defines "equivalence relation" 为reflexive(“a.relation(a) 始终为true”)、symmetric(a1.relation(a2) == a2.relation(a1))和transitive(a1.relation(a2) && a2.relation(a3) 暗示a1.relation(a3)) - 并指Object.equals()' docs。 (很遗憾,Guava wiki 没有详细说明...
但是不同类型的Set 在这方面有何不同(即等价关系)?他们似乎都继承了equals() from AbstractSet?它与集合持有的对象类型无关(例如Set<Cow> 与Set<Chicken>),对吗?
【问题讨论】:
标签: java collections set guava equivalence