gpt4 book ai didi

java - Java 或 groovy 中包含整数的集合之间的相似性

转载 作者:行者123 更新时间:2023-11-30 06:54:48 25 4
gpt4 key购买 nike

我有 HashSet<Integer> AB我想比较以获得它们有多相似的数值(例如,如果 AB 的 90% 相同,则为 0.9)。在 Java 或 Groovy 中执行此操作的最佳(最快)方法是什么?

我天真的方法是从 A 中获取所有相等的元素和 B并将它们的大小除以 A 的原始大小.有什么原因(例如速度)为什么这不能正常工作吗?一般来说,我更喜欢任何已经实现的方式来获得相似性。

注:比较1, 212应该是 0% 相似度。

最佳答案

计算大小为 M 和 N 的 2 个任意 HashSet 的相似性的唯一方法是选择最小的一个并检查其元素是否存在于更大的一个中。 JDK中没有这个方法。如果您正在寻找最快的解决方案,请自己编写:

int count = 0;
for (E element : smallSet) {
if (bigSet.contains(element) {
count++;
}
}

如果你不太关心性能和额外的内存,你可以使用

int count = new HashSet(smallSet).retainAll(bigSet);

或来自 Guava 的类似方法 Sets#intersection(Set, Set)图书馆

关于java - Java 或 groovy 中包含整数的集合之间的相似性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36005065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com