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方法相关推荐
- java remove removeat_2016.3.12 Java中ArrayList类详解(转)
1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...
- Java集合类中removeAll和remove的区别
Java 集合类中的 List.removeAll() 方法用于从列表中移除指定 collection 中包含的所有元素. 语法:removeAll(Collection<?>c) 该方法 ...
- Java 中的 XML:Java 文档模型的用法
Java 中的 XML:Java 文档模型的用法 英文原文 内容: 代码对比 DOM JDOM dom4j Electric XML XPP 结束语 下一次... 参考资料 关于作者 对本文的评价 相 ...
- Java并发编程-并发工具包(java.util.concurrent)使用指南(全)
1. java.util.concurrent - Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包.这个包包含有一系列能够让 Ja ...
- 写缓存java,编写线程安全的Java缓存读写机制 (原创)
一种习以为常的缓存写法: IF value in cached THEN return value from cache ELSE compute value save value in cache ...
- java 百分比相加_2019年Java面试题基础系列228道(5),快看看哪些你还不会?
2019年Java面试题基础系列228道 Java面试题(一) 第一篇更新1~20题的答案解析 第二篇更新21~50题答案解析 第三篇更新51~95题答案解析 Java面试题(二) 第四篇更新1~20 ...
- Linux java集成安装环境,Linux下Java环境安装
本节主要讲解Linux(Centos 6.5)下Java环境的安装 1. 卸载机器上默认安装的JDK 在Linux环境下一般会默认安装jdk,为了自己项目的开发部署,一般情况要重新装jdk,而且自己装 ...
- 阿里巴巴java规范检查_阿里巴巴Java开发规范
>[info] 1.[强制]POJO 类中布尔类型的变量,都不要加 is. 否则部分框架解析会引起序列化错误. 反例:定义为基本数据类型 `boolean isSuccess`:的属性,它的方法 ...
- java classpath import package 机制 @Java的ClassPath, Package和Jar
java classpath import package 机制 從一個簡單的例子談談package與import機制 基本原則:為什麼需要將Java文件和類文件切實安置到其所歸屬之Package所對 ...
最新文章
- 【Java】Lucene检索引擎详解
- IBM被曝拟出售昔日明星业务Watson Health,10年医疗梦就此破碎?
- hdu 2025:查找最大元素(水题,顺序查找)
- 可阅读性html css,css有继承性的属性有哪些?
- windows屏蔽USB接口的脚本
- mysql 脚本安装工具_mysql 非安装版的一个自动安装脚本及工具(更新版)
- django 集成个推_Django动态添加定时任务之djangocelery的使用
- 规模比互联网大 30 倍的物联网,如何入门?
- 如何在 MacBook Pro 上调整显示设置?
- 设计模式系列之过滤器模式(Chriteria Pattern)
- atitit.为什么 java开发要比php开发速度慢??
- go interface类型转换_图解Go的unsafe.Pointer
- DFM弹幕库在直播中的使用
- Linux 端口扫描
- 【人工智能】马尔可夫链模型是什么?
- Windows:电源计划:隐藏在深处的卓越性能,Get正确打开方式
- web网页前端学习 案例一之制作网页表格
- 麦普奇医疗获得千万元A轮融资,投资方为达晨财智...
- 【主线任务】掌握数据的力量!数据科学家们速速来战!
- Android 编译速度优化黑科技 - RocketX