SR *_*han 5 java collections set
Set如果尝试复制现有元素,则维护唯一记录并更新现有记录。
考虑以下两种情况。您认为两者之间哪一个代码更快、更高效?
场景 1:使用 addAll()
Set<String> uniqueSet = new HashSet<String>();
uniqueSet = getSomedata(param1);
uniqueSet.addAll( getSomedata(param2) );
Run Code Online (Sandbox Code Playgroud)
这里getSomedata()只是返回数据的集合,该方法中没有特殊的逻辑。
场景 2:使用 add()
Set<String> uniqueSet = new HashSet<String>();
getSomedata(param1, uniqueSet);
getSomedata(param2, uniqueSet );
Run Code Online (Sandbox Code Playgroud)
这getSomedata()是如下
void getSomedata(String param, Set<String> uniqueSet){
while (someCollection.hasNext()){
uniqueSet.add( someCollection.get() );
}
}
Run Code Online (Sandbox Code Playgroud)
addAll基本上迭代它给出的集合并调用add每个方法。OpenJDK8 的实现方式如下:
public boolean addAll(Collection<? extends E> c) {
boolean modified = false;
for (E e : c)
if (add(e))
modified = true;
return modified;
}
Run Code Online (Sandbox Code Playgroud)
但作为一般经验法则,除非您完全确定自己可以发明更好的轮子,否则您不应该尝试发明轮子。
| 归档时间: |
|
| 查看次数: |
6701 次 |
| 最近记录: |