java list移除所有元素,从List中移除指定 List 中包含的其所有元素(可选操作)。...
從List中移除指定 List 中包含的其所有元素,這個當然用List里面的removeAll方法了,但是有朋友說能不能不用removeAll呀
于是我就寫了如下代碼:
class="java" name="code">List l = ...;
List list = ....;
for(int i=0;i
String s = l.get(i);
if(list.contains(s)){
l.remove(s);
}
}
?因為兩個list讀取的文件,運行后看著沒什么錯,后來無聊用了removeAll,發現結果不一樣。
看代碼沒什么問題呀,后來經過反復實驗,終于發現原來:List每remove掉一個元素以后,后面的元素都會向前移動,此時如果執行i=i+1,則剛剛移過來的元素沒有被讀取。
解決方法:
在remove掉一個元素后,把i減1,代碼如下:
List l = ...;
List list = ....;
for(int i=0;i
String s = l.get(i);
if(list.contains(s)){
l.remove(s);
i--;
}
}
?百度之后又發現另外兩種方法:
1、倒過來遍歷list
List l = ...;
List list = ....;
for(int i=l.length;i>=0;i--){
String s = l.get(i);
if(list.contains(s)){
l.remove(s);
}
}
?
2、使用iterator.remove()方法刪除
List l = ...;
List list = ....;
for (Iterator it = list.iterator(); it.hasNext();) {
String s = (String)it.next();
if (list.contains(s)){
it.remove();
}
}
?
總結
以上是生活随笔為你收集整理的java list移除所有元素,从List中移除指定 List 中包含的其所有元素(可选操作)。...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java actor模型实例,详解The
- 下一篇: php扩展实现hook,ThinkPHP