【发布时间】:2014-03-08 16:15:21
【问题描述】:
假设我有一个字符串哈希集的向量:
Vector<HashSet<String>> strSetVector = new Vector<HashSet<String>>();
我有 4 个包含以下字符串的哈希集:
"A", "B"
"C", "D"
"B", "C"
"E", "F"
我想组合至少有一个共同值的集合,以便我最终得到:
"A", "B","C", "D"
"E", "F"
明显的解决方案是通过向量和每个哈希集迭代多次以找到共同值,但这需要一段时间来处理向量大小为 1000+ 和大小为 100 的哈希集。我也必须去如果我合并一个哈希集以查看现在是否有其他可以合并的哈希集,则再次通过该过程。例如,第一次向量迭代会将 B,C 组合到 A,B 以便我最终得到:
"A", "B", "C"
"C", "D"
"E", "F"
向量/哈希集的下一次迭代:
"A", "B", "C", "D"
"E", "F"
向量/哈希集的下一次迭代将找不到任何公共字符串,因此没有什么要合并的,我就完成了。
对于看似简单的问题,我想要一个更优雅的解决方案。有什么想法吗?
【问题讨论】:
-
您使用
Vector的任何原因? -
我只是出于方便而使用向量来保存哈希集列表。不过,我不必使用矢量。
-
我建议您使用
List,分别。ArrayList那么,Vector是同步的,而List不是。
标签: java performance