展开全部

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方法相关推荐

  1. java remove removeat_2016.3.12 Java中ArrayList类详解(转)

    1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...

  2. Java集合类中removeAll和remove的区别

    Java 集合类中的 List.removeAll() 方法用于从列表中移除指定 collection 中包含的所有元素. 语法:removeAll(Collection<?>c) 该方法 ...

  3. Java 中的 XML:Java 文档模型的用法

    Java 中的 XML:Java 文档模型的用法 英文原文 内容: 代码对比 DOM JDOM dom4j Electric XML XPP 结束语 下一次... 参考资料 关于作者 对本文的评价 相 ...

  4. Java并发编程-并发工具包(java.util.concurrent)使用指南(全)

    1. java.util.concurrent - Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包.这个包包含有一系列能够让 Ja ...

  5. 写缓存java,编写线程安全的Java缓存读写机制 (原创)

    一种习以为常的缓存写法: IF value in cached THEN return value from cache ELSE compute value save value in cache ...

  6. java 百分比相加_2019年Java面试题基础系列228道(5),快看看哪些你还不会?

    2019年Java面试题基础系列228道 Java面试题(一) 第一篇更新1~20题的答案解析 第二篇更新21~50题答案解析 第三篇更新51~95题答案解析 Java面试题(二) 第四篇更新1~20 ...

  7. Linux java集成安装环境,Linux下Java环境安装

    本节主要讲解Linux(Centos 6.5)下Java环境的安装 1. 卸载机器上默认安装的JDK 在Linux环境下一般会默认安装jdk,为了自己项目的开发部署,一般情况要重新装jdk,而且自己装 ...

  8. 阿里巴巴java规范检查_阿里巴巴Java开发规范

    >[info] 1.[强制]POJO 类中布尔类型的变量,都不要加 is. 否则部分框架解析会引起序列化错误. 反例:定义为基本数据类型 `boolean isSuccess`:的属性,它的方法 ...

  9. java classpath import package 机制 @Java的ClassPath, Package和Jar

    java classpath import package 机制 從一個簡單的例子談談package與import機制 基本原則:為什麼需要將Java文件和類文件切實安置到其所歸屬之Package所對 ...

最新文章

  1. 【Java】Lucene检索引擎详解
  2. IBM被曝拟出售昔日明星业务Watson Health,10年医疗梦就此破碎?
  3. hdu 2025:查找最大元素(水题,顺序查找)
  4. 可阅读性html css,css有继承性的属性有哪些?
  5. windows屏蔽USB接口的脚本
  6. mysql 脚本安装工具_mysql 非安装版的一个自动安装脚本及工具(更新版)
  7. django 集成个推_Django动态添加定时任务之djangocelery的使用
  8. 规模比互联网大 30 倍的物联网,如何入门?
  9. 如何在 MacBook Pro 上调整显示设置?
  10. 设计模式系列之过滤器模式(Chriteria Pattern)
  11. atitit.为什么 java开发要比php开发速度慢??
  12. go interface类型转换_图解Go的unsafe.Pointer
  13. DFM弹幕库在直播中的使用
  14. Linux 端口扫描
  15. 【人工智能】马尔可夫链模型是什么?
  16. Windows:电源计划:隐藏在深处的卓越性能,Get正确打开方式
  17. web网页前端学习 案例一之制作网页表格
  18. 麦普奇医疗获得千万元A轮融资,投资方为达晨财智...
  19. 【主线任务】掌握数据的力量!数据科学家们速速来战!
  20. Android 编译速度优化黑科技 - RocketX

热门文章

  1. myeclipse中添加Oracle数据库
  2. Android 自定义带图标Toast,工具方法,Toast自定义显示时间
  3. python utc 时间
  4. mongoose 多条件 模糊查询
  5. js Ajax跨域访问
  6. 计算机组成原理中ID是什么,计算机组成原理.doc
  7. 几种排序与最大K问题
  8. java数组排序源码_Java 数组工具类排序,最大值最小值等
  9. conda安装特定版本的包
  10. C语言基础之数据结构