参见英文答案 > What is the fastest way to compare two sets in Java? 9个
给出两个集合:如何在Java中有效地比较它们?
>(a)将它们保留为列表,对它们进行排序并进行比较. (可比)
>(b)将它们保存为集合并比较集合的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,例如,通过迭代所有元素来计算哈希码,因此它不是*操作.