<分区>
给定两个集合:如何在 Java 中有效地比较它们?
- (a) 将它们保存为
List
,对它们进行排序并进行比较。 (比较
) - (b) 将它们保存为
Set
并比较 Sets 的hashCode
?
背景:
需要做很多比较 集合很小(通常每组 < 5 个元素)。
标签 java set comparable
<分区>
给定两个集合:如何在 Java 中有效地比较它们?
List
,对它们进行排序并进行比较。 (比较
)Set
并比较 Sets 的 hashCode
?背景:
需要做很多比较 集合很小(通常每组 < 5 个元素)。
最佳答案
比较两组的正确方法是使用the equals
method .除非您证明这是导致性能问题的代码的一部分(我对此表示怀疑),否则我不会担心性能。考虑到您的集合的大小(5 个元素),这将非常快(可能是亚毫秒)。
keep them as lists, sort them and compare them. (comparable)
肯定会更慢,因为您需要复制元素、对它们进行排序和比较。
keep them as sets and compare the hashcode of the sets?
如果 2 个集合相等(具有相同的内容),它们将具有相同的哈希码。倒数不成立:具有不同内容的 2 组可能具有相同的哈希码。另请注意,例如对于 HashSet
,哈希码是通过遍历所有元素计算的,因此它不是一个自由操作。
关于java - 如何有效地比较集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13360675/