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;
}
但是作为一般经验法则,除非绝对确定可以发明更好的轮子,否则不要尝试发明轮子。