Guava Sets intersection(HashSet1, HashSet2) 按散列还是按值比较?
Guava Sets intersection(HashSet1, HashSet2) compares by hash or by value?
使用Guava Sets求两个HashSet
的交集时,如何判断两个元素相同?按它们的值还是按它们的哈希值?
==更新==
查看java.util.HashSet的源码,发现contains()
实际上调用了containsKey()
来进行比较:
哈希值从来没有被用来确定相等性。那不是他们的目标。在基于散列的集合中,他们的目标是减少可能相等的候选人的数量。
intersection()
returns 两个集合的视图,因此它将相等性测试完全委托给下面的两个集合。
使用Guava Sets求两个HashSet
的交集时,如何判断两个元素相同?按它们的值还是按它们的哈希值?
==更新==
查看java.util.HashSet的源码,发现contains()
实际上调用了containsKey()
来进行比较:
哈希值从来没有被用来确定相等性。那不是他们的目标。在基于散列的集合中,他们的目标是减少可能相等的候选人的数量。
intersection()
returns 两个集合的视图,因此它将相等性测试完全委托给下面的两个集合。