Set
维护唯一记录,并在尝试复制现有元素时更新现有记录。
考虑以下两种情况。您认为两者之间哪一个代码更快、更高效?
场景 1:使用 addAll()
Set<String> uniqueSet = new HashSet<String>();
uniqueSet = getSomedata(param1);
uniqueSet.addAll( getSomedata(param2) );
这里 getSomedata()
只是返回数据集合,该方法中没有特殊逻辑。
场景 2:使用 add()
Set<String> uniqueSet = new HashSet<String>();
getSomedata(param1, uniqueSet);
getSomedata(param2, uniqueSet );
这里getSomedata()
如下
void getSomedata(String param, Set<String> uniqueSet){
while (someCollection.hasNext()){
uniqueSet.add( someCollection.get() );
}
}
最佳答案
addAll
基本上迭代其给定的集合,并在每个方法上调用 add
。 OpenJDK8 的实现方式如下:
public boolean addAll(Collection<? extends E> c) {
boolean modified = false;
for (E e : c)
if (add(e))
modified = true;
return modified;
}
但作为一般经验法则,除非您完全确定自己可以发明更好的轮子,否则您不应该尝试发明轮子。
关于Java Set - Set.add() 和 Set.addAll() 哪个更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32799468/