java - 如何有效地比较集合?

标签 java set comparable

<分区>

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

  • (a) 将它们保存为 List,对它们进行排序并进行比较。 (比较)
  • (b) 将它们保存为 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/

相关文章:

java - AWS ECS : Task Being Mapped to Wrong Target Group

c - libxml2 + pblSet(或任何其他集)-无法比较结果

java - 为 Arrays.Sort of Points 写一个可比较的

java - "Tomcat Endpoint"等待对象监视器是什么意思?

java - 窗口移动导致增量时间不正确

java - Arrays.asList 与数据库数据的等效形式

java - 比较器和比较器接口(interface)

Java:使用 Collat​​orKey 对集合进行排序

java - 从文本文件中提取电话号码的正则表达式是什么

java - 测试两个集合是否与 Java 流共享 3 个元素