如何有效地比较集?

use*_*885 3 java set comparable

给出两个集合:如何在Java中有效地比较它们?

  • (a)将它们保存为Lists,对它们进行排序并进行比较.(Comparable)
  • (b)将它们保存为Sets并比较hashCode套装?

背景:

需要进行许多比较集很小(通常每组<5个元素).

ass*_*ias 9

比较两组的正确方法是使用equals方法.我不担心性能,除非您已经证明这是导致性能问题的代码的一部分(我怀疑).考虑到你的设置(5个元素)的大小,这将非常快(可能是亚毫秒).

将它们保存为列表,对它们进行排序并进行比较.(可比)

肯定会慢,因为你需要复制元素,对它们进行排序和比较.

将它们保存为集合并比较集合的哈希码?

如果2个集合相等(具有相同的内容),则它们将具有相同的哈希码.倒数不是真的:具有不同内容的2个集合可以具有相同的散列码.还要注意,对于HashSet例如,通过迭代所有元素来计算哈希码,因此它不是自由操作.