gpt4 book ai didi

algorithm - 从 map 集合中删除另一个 map 中包含的任何 map 的高效算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:15:52 24 4
gpt4 key购买 nike

我已经设置了一组独特的映射(目前是 Java HashMap),并希望从中删除任何完全被该集合中的其他映射完全包含的映射(即如果 m.entrySet() 是一个,则从 s 中删除 m s 中其他 n 的 n.entrySet() 的子集。)

我有一个 n^2 算法,但它太慢了。有没有更有效的方法来做到这一点?

编辑:

如果有帮助的话,可能的键集很小。

这是一个低效的引用实现:

public void removeSubmaps(Set<Map> s) {
Set<Map> toRemove = new HashSet<Map>();
for (Map a: s) {
for (Map b : s) {
if (a.entrySet().containsAll(b.entrySet()))
toRemove.add(b);
}
}
s.removeAll(toRemove);
}

最佳答案

我不确定除了 n^2 算法之外我还能做些什么,但我有一个快捷方式可以让它更快。用每张 map 的长度列出你的 map 并对其进行排序。 map 的适当子集必须短于或等于您正在比较的 map - 永远不需要与列表中更高的 map 进行比较。

关于algorithm - 从 map 集合中删除另一个 map 中包含的任何 map 的高效算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1784970/

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