List.removeIf():删除集合中满足给定条件的所有元素
今天偶然间发现了Collection在1.8新增了一个removeIf(Predicate<? super E> filter)方法,能够实现面试官们常问的:如何一边遍历,一边删除。
首先是源码:
/*** Removes all of the elements of this collection that satisfy the given* predicate. Errors or runtime exceptions thrown during iteration or by* the predicate are relayed to the caller.** @implSpec* The default implementation traverses all elements of the collection using* its {@link #iterator}. Each matching element is removed using* {@link Iterator#remove()}. If the collection's iterator does not* support removal then an {@code UnsupportedOperationException} will be* thrown on the first matching element.** @param filter a predicate which returns {@code true} for elements to be* removed* @return {@code true} if any elements were removed* @throws NullPointerException if the specified filter is null* @throws UnsupportedOperationException if elements cannot be removed* from this collection. Implementations may throw this exception if a* matching element cannot be removed or if, in general, removal is not* supported.* @since 1.8*/
default boolean removeIf(Predicate<? super E> filter) {Objects.requireNonNull(filter);boolean removed = false;final Iterator<E> each = iterator();while (each.hasNext()) {if (filter.test(each.next())) {each.remove();removed = true;}}return removed;}
源码中注释很长,但是相信大家就能看出新增方法的作用了。删除集合中满足给定条件的所有元素
接下来模拟需求是:筛选掉所有没给我点赞的用户[护住狗头]
上代码:
import java.util.*;
import java.util.function.Predicate;public class Demo {Demo(){}class User{private int id;private String name;private boolean like;public User(){}public User(int id,String name,boolean like){this.id = id;this.name = name;this.like = like;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public boolean getLike() {return like;}public void setLike(boolean like) {this.like = like;}@Overridepublic String toString(){return "User{" +"id=" + id +", name='" + name + '\'' +", like=" + like +'}';}}public static void main(String[] args) {Demo demo = new Demo();List<User> list = new ArrayList<>();list.add(demo.new User(1,"张三",true));list.add(demo.new User(2,"李四",false));list.add(demo.new User(3,"王五",true));list.add(demo.new User(4,"赵六",false));// 1.常规方式/* list.removeIf(new Predicate<User>(){@Overridepublic boolean test(User user){return false == user.getVip();}});*/// 2.使用lambda表达式(推荐)list.removeIf(user -> false == user.getLike());System.out.println(list.toString());}
}
[User{id=1, name=‘张三’, like=true}, User{id=3, name=‘王五’, like=true}]
以上,就把没点赞的用户全都筛选出去了。是不是so easy![护住狗头]
List.removeIf():删除集合中满足给定条件的所有元素相关推荐
- 【Groovy】集合遍历 ( 使用集合的 findAll 方法查找集合中符合匹配条件的所有元素 | 代码示例 )
文章目录 一.使用集合的 findAll 方法查找集合中符合匹配条件的所有元素 1.闭包中使用 == 作为 findAll 方法的查找匹配条件 2.闭包中使用 is 作为 findAll 方法的查找匹 ...
- 删除集合中特定元素的几种情况
从集合中删除元素一直是一个比较容易遗漏的知识点,今天来给大家介绍一下删除集合中特定元素的一些情况. (一)List如何实现遍历删除 以ArrayList为例 List<String> ...
- python删除元素del 可以删除部分元素吗_可以使用del删除集合中的部分元素。
[判断题]Python集合可以包含相同的元素.(3.0分) [单选题]student = dict(姓名='张三', 年龄=20, 性别='男'),则student.get("name&qu ...
- java集合:删除集合中的信息
在上一节创建的集合中,想要删除某条信息:使用set.remove() //删除花花的信息后并输出 for(Cat cat:set){ //增强型for循环if(cat.getName().equals ...
- PageCollectionView[Bug],使用Filter的时候,删除集合中的元素,会导致ArgumentOutOfRangeException...
PageCollectionView,没有使用Filter的时候一切正常:当使用Filter的时候,删除集合中的元素,会抛出如下异常: 1: 指定的参数已超出有效值的范围.\n参数名: index 2 ...
- 循环的时候去删除集合中的元素 java.util.ConcurrentModificationException
使用for循环,删除集合中的元素,会报错 java.util.ConcurrentModificationException 只能通过迭代器 iterator删除 1:在while循环中使用itera ...
- java删除集合元素吗_java如何删除集合中的元素
java如何删除集合中的元素 如何使用java删除集合中的'元素呢?下面是小编给大家提供的删除集合中元素的常见方法,欢迎阅读,更多详情请关注应届毕业生考试网. Java代码如下: package co ...
- Java 删除集合中指定的元素
使用 Collection 类的 collection.remove() 方法来删除集合中的指定的元素 完整代码 import java.util.*;public class Main {publi ...
- vue中如何在方法中动态的删除集合中的元素!?
参考https://blog.csdn.net/weixin_42230550/article/details/87990486 vue中,如何在方法中动态的删除集合中的元素? me.btn_elem ...
最新文章
- LeetCode中等题之二倍数对数组
- 飞书×品玩邀请多位行业大咖,共谈跨境企业“战疫”秘籍!
- Linux修改/etc/profile配置错误command is not found自救方法
- python语言介绍-Python这门语言的大概介绍
- 你不知道的Python的输入输出
- BCB6.0里没有TCppWebBrowser
- CentOS6.5下安装iRedMail中需要解决的问题
- Eclipse日常踩坑记录——导入文件时遇到的几个问题
- WPF 美化界面,样式的使用
- oracle查看所有用户6,CSS_Oracle 用户权限查询,1.查看所有用户:nb - phpStudy
- 日语输入法 android8.0,百度日文输入法
- js利用数组创建图片对象
- HOJ 1568 Fibonacci(对数,数列通项公式)
- 视频压缩大小怎么做?压缩视频用这3个工具准没错!
- 关于将txt文件中的数据批量添加到excel中,显示不全的问题
- 全国大学生数学竞赛公式(全)
- MATLAB imresize函数的用法
- python之excel读写报表统计入门
- 天圆地方· 围棋界的盲棋天才 -- 鲍云
- ANSYS APDL学习(8):选取全部的封闭曲面生成实体(体积)的命令流讲解
热门文章
- Ps 初学者教程「66」如何在照片中删除和添加对象?
- 怎么测试网络稳定性_权威评测报告发布,移动领跑江苏地区5G网络
- Bluestacks蓝叠安卓模拟器与PC电脑怎么传文件
- 【深度学习训练之Batch】
- 计算机游戏配机方案,小白不会装机怎么办?2021年最佳游戏PC整机配置一览
- 使用学校论文world模板,使用endnote插入文献时,world闪退
- H3C模拟器LITO 连接 本地网卡
- Vehicle Spy3软件常用功能之实时监控总线报文
- 逃逸分析--代码三大优化策略(堆不是分配对象存储的唯一选择)
- 北京理工大学在职计算机博士,北京理工大学在职博士是双证吗