java – 如何有效地比较集?

参见英文答案 > 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,例如,通过迭代所有元素来计算哈希码,因此它不是*操作.

上一篇:java – 使用泛型创建返回较大函数的max函数


下一篇:CodeForces 1288D. Minimax Problem (二分+位运算)