Java:尽可能有效地比较哈希集

标签 java performance hashset

我有 3 个哈希集。 goodLinkSet、badLinkSet 和 testLinkSet。

goodLinkSet 保存有效的 URL 列表,badLinkSet 保存无效的 URL 列表。 testLinkSet 包含一个 URL 列表,我需要检查它们是好还是坏,这里的一些链接已经在其他两组中进行了测试。

我想要做的是删除 testLinkSet 中出现在 goodLinkSet 和 badLinkSet 中的所有字符串/链接,这样我就不会多次测试 URL。我想尽可能高效、快速地完成这件事。 foreach循环似乎有点慢。

最有效的运行方式是什么?有没有什么功能可以为我做到这一点?任何建议将不胜感激!

最佳答案

What I want to do is remove all the strings/links in testLinkSet that appear in goodLinkSet and badLinkSet so I'm not testing URLs multiple times.

testLinkSet.removeAll(goodLinkSet);
testLinkSet.removeAll(badLinkSet);

这将在内部运行一个循环,但除非您有(许多)数百万个链接,否则您将没有时间在完成之前数到 1。

如果您需要更好的性能,您应该跟踪每个单独的链接,并在测试时删除/添加它们。

关于Java:尽可能有效地比较哈希集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12973867/

相关文章:

java - 如何获取调用DocumentFilter的对象

java - Wicket 标签未更新/保持不可见

java - 如何在 Spring Web 应用程序中为同一 View 组合 GET 和 POST HTTP 方法?

没有 JIT 的 Android 设备

vb.net - 大量文件的 Visual Studio 和编译性能问题

java - Android 的碰撞&触摸+射击方法

python - 从数组的下 n 个元素高效地创建数组

ruby - 如何从存储在 ruby​​ 哈希中的数组中删除特定值

Java: "myString[hey, there]"到 HashSet?

java - Java Map 中的相同对象 ID