由于执行迭代和添加新条目的方式,如果一个迭代一组并复制到另一组,则性能非常慢。考虑以下代码片段:
final int num = (int) (1024 * 1024 * 2.1);
final HashLongSet set1 = HashLongSets.newMutableSet();
for (int i = 0; i < num; i++) {
final long oid = r.nextLong();
set1.add(oid);
}
System.out.println("populated first set..");
final HashLongSet set2 = HashLongSets.newMutableSet();
final LongCursor cursor = set1.cursor();
while (cursor.moveNext()) {
set2.add(cursor.elem());
}
System.out.println("populated first set..");
在这种情况下,有什么方法可以加速第二组的人口?我知道如果我预先知道预期的集合大小,我可以在第二个集合构造中使用它并让事情变得更快——但这并不总是可能的——我可以在确定值需要哪个输出集合之间插入一些条件插入或完全丢弃。