我有 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/