java remove all_如何使用Java List等集合类的removeAll方法
展開全部
List等集合類的removeAll方法,API文檔描述如下e69da5e6ba9062616964757a686964616f31333361303062:boolean?removeAll(Collection>?c)
從列表中移除指定?collection?中包含的其所有元素(可選操作)。
用法案例如下:List?list1?=?new?ArrayList();
list1.add("1");
list1.add("2");
list1.add("3");
list1.add("4");
list1.add("5");
list1.add("6");
List?list2?=?new?ArrayList();
list2.add("2");
list2.add("4");
list2.add("6");
list2.add("8");
list1.removeAll(list2);??//刪除?2?4?6
removeAll的方法實現在下面的類里面:
java.util.AbstractCollection
具體代碼為:public?boolean?removeAll(Collection>?c)?{
boolean?modified?=?false;
Iterator>?it?=?iterator();
while?(it.hasNext())?{
if?(c.contains(it.next()))?{
it.remove();
modified?=?true;
}
}
return?modified;
}
可以看到在調用removeAll方法時,實際上是循環調用了remove方法,remove方法具體代碼如下:public?boolean?remove(Object?o)?{
Iterator?it?=?iterator();
if?(o==null)?{
while?(it.hasNext())?{
if?(it.next()==null)?{
it.remove();
return?true;
}
}
}?else?{
while?(it.hasNext())?{
if?(o.equals(it.next()))?{
it.remove();
return?true;
}
}
}
return?false;
}
注意:remove方法中有一段關鍵的代碼:if (o.equals(it.next())) ,在執行removeAll方法時是通過equals方法來判斷集合元素是否相等的,如果集合的元素是對象,并且沒有Override equals方法,可能會導致移除失敗!
總結
以上是生活随笔為你收集整理的java remove all_如何使用Java List等集合类的removeAll方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统高响应比优先调度算法模拟实验
- 下一篇: javascript --- [有趣的