|
|
1
159
这取决于你想在比较逻辑中做什么。。。如果你在一个集合中找到一个元素而不是在另一个集合中会发生什么?你的方法有一个
更精细的控制(如果需要):
如果需要获取一个集合中的元素而不是另一个集合中的元素。
如果
|
|
|
2
61
请注意它是如何优化常见情况的:
之后,
因此,当两个集合相等但不是相同的对象时,就会出现最差的性能。这种成本通常是
更新 如果您愿意在定制集实现上投入时间,有一种方法可以改进“几乎相同”的情况。
其思想是,您需要预先计算并缓存整个集合的哈希,这样就可以获得集合的当前哈希代码值
然后,每次添加或删除元素时都可以廉价地更新集合的缓存哈希代码。在这两种情况下,您只需将元素的hashcode与当前的集合hashcode进行异或。
你可以把这个想法再进一步。。。至少在理论上。 警告 假设您的set element类有一个方法来返回元素的加密校验和。现在,通过对元素返回的校验和进行异或运算来实现集合的校验和。 这给我们买了什么?
好吧,如果我们假设没有秘密发生,任何两个不相等的集合元素有相同的N位校验和的概率是2
-N
. 两个不等集具有相同N位校验和的概率也是2
-N
-N 时间。如果N足够大(例如512位),错误答案的概率就可以忽略不计(例如大约10 ). 缺点是计算元素的加密校验和非常昂贵,特别是随着比特数的增加。所以你真的需要一个有效的机制来记忆校验和。这可能会有问题。 可能是 不管可能性有多小都是不可接受的。(但如果是这样的话。。。如何处理宇宙射线翻转临界点的情况?或者如果它在冗余系统的两个实例中同时翻转相同的位?) |
|
|
3
16
番石榴有一种方法
|
|
|
4
5
您可以从 https://www.mkyong.com/java/java-how-to-compare-two-sets/
或者如果您喜欢使用单个return语句:
|
|
|
5
4
有一个O(N)解决方案,适用于非常具体的情况:
|
|
|
6
3
如果你正在使用
并在此基础上得出结论。 |
|
|
7
2
|
|
|
8
1
|
|
9
-1
我认为可以使用equals方法引用方法。我们假设没有疑问的对象类型有自己的比较方法。这里有一个简单明了的例子,
|
|
Sweepy Dodo · JSON lite的格式化 1 年前 |
|
|
giantjenga · 优化整数向量到二进制向量的转换 1 年前 |
|
Zegarek · Postgresql递归查询未提供预期结果 1 年前 |
|
|
Joe · 为什么这两个查询之间的性能存在如此大的差异? 2 年前 |
|
tic-toc-choc · 在`dplyr中高效使用列表进行过滤` 2 年前 |