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}]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/554832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机专业论文docx,计算机系毕业论文范文-20210606000812.docx-原创力文档

计算机系毕业论文范文一&#xff1a;计算机技术在工程项目管理中的应用推动国家经济发展的核心是科学技术的进步。有效推动科学技术进步的关键在于创新&#xff0c;这是国家经济与社会前进的有效动力&#xff0c;在相关产业领域也发挥着非常重要作用&#xff0c;作为国家经济的…

小学二年级上学期计算机教案,小学数学二年级上册分苹果教案设计

小学数学二年级上册分苹果教案设计〖教学目标1.经历分苹果等实际操作&#xff0c;初步体会有余数除法与生活的密切联系&#xff0c;进一步体会除法的意义。2.通过实际操作&#xff0c;抽象出有余数除法的书写格式&#xff0c;并体会余数一定要比除数小。〖教材分析分苹果是二年…

生物计算机的主要原材料是(),新材料为生物计算机打造“神经元”和“突触”...

一项最新研究利用复杂的氧化物&#xff0c;打造出了与神经元和突触相似的元件。图片来自pixabay.com虽然电脑的计算速度比人脑快&#xff0c;但在物体识别任务等方面&#xff0c;人脑还是更胜一筹。除此之外&#xff0c;人脑耗费的能量也远低于电脑。大脑的运作方式可以在一定程…

hotmail接收邮件服务器(pop),Microsoft微软邮箱 outlook、hotmail 打开pop和imap的方法

分享个微软邮箱 outlook、hotmail 打开pop和imap的方法只有打开了pop或者imap &#xff0c; foxmail一类的邮件管理客户端才能正常收邮件&#xff1b;打开了smtp才能正常发邮件。设置方法如图&#xff1a;1.登录进去账户以后&#xff0c;点击右上角的设置&#xff0c;齿轮图标&…

MySQL 索引 是如何提高 查询效率 的?

前言 我们都知道当查询数据库变慢时&#xff0c;需要建索引去优化。但是只知道索引能优化显然是不够的&#xff0c;我们更应该知道索引的原理&#xff0c;因为不是加了索引就一定会提升性能。那么接下来就一起探索MYSQL索引的原理吧 什么是索引 索引其实是一种能高效帮助MYS…

yii2 ajax访问控制器,如何在yii2中运行控制器动作作为ajax

使用模态来解决它。use yii\bootstrap\Modal;use johnitvn\ajaxcrud\CrudAsset;Html::a(Custom, [custom], [role>modal-remote, title>Custom]);在页面底部.."id">"ajaxCrudModal","footer">"",// always need it for jq…

ajax onerror code,Ajax请求'onError'处理程序

我的网站上有一项功能&#xff1a;删除不刷新页面。用户只需按下删除&#xff0c;浏览器就会发送Ajax请求。它会用ID参数加载delete脚本。Ajax请求onError处理程序一切正常。但由于数据库的参照完整性&#xff0c;它不是很好。例如&#xff0c;有可能删除一些人居住的街道。我想…

FreeMarker详细介绍

FreeMarker 1. 主要内容 2.FreeMarker概述 2.1. FreeMarker概念 FreeMarker 是一款 模板引擎&#xff1a; 即一种基于模板和要改变的数据&#xff0c; 并用来生成输出文本(HTML网页&#xff0c;电子邮件&#xff0c;配置文件&#xff0c;源代码等)的通用工具。 是一个Java类…

微信游戏奇迹暖暖选取服务器失败,奇迹暖暖微信登录授权失败

《远征》即将推出衣橱系统 或将成为网游版奇迹暖暖双十一狂欢刚刚落幕&#xff0c;这几天的状态都将在等快递、拆快递中度过&#xff0c;而你剁手而来的衣服&#xff0c;是否需要一个大大的衣帽间呢?《奇迹重生》持之以恒玩家的专属嘉奖坚持不懈的努力才能最终成为真正的强者!…

SpringBoot整合Freemarker导出word文档表格

freemarker模板里面的template.process()方法里传入的第一个参数Object类型&#xff0c;如果是一个实体类对象在模板上怎么进行渲染&#xff0c;将实体类的值取出 freemarker会调用ObjectWrapper对传入的对象进行warp&#xff0c;具体类型在代码里面用instanceof进行判断。一般…

ambari 修改服务器名,Ambari修改主页面方法

分享下Ambari修改主页面方法&#xff0c;希望对大家有用。[roothdp159 ambari-web]# brunch watch --serverOct 10:22:43 - info: application started on http://localhost:3333/Oct 10:22:47 - info: compiled 891 files into 5 files, copied 260 in 3988msOct 10:23:12 - i…

mybatis plus之自定义SQL查询

注解查询 public interface UserMapper extends BaseMapper<User> {Select("select * from user ${ew.customSqlSegment}")List<User> selectAll(Param(Constants.WRAPPER) Wrapper<User> wrapper); }使用XML查询 maven 资源 默认只有resources…

快速向服务器传文件格式,客户端如何向服务器传文件格式

客户端如何向服务器传文件格式 内容精选换一换语音通话平台通过此接口向客户推送语音通话业务用户呼叫时的状态信息&#xff0c;如呼入、呼出、振铃、应答、挂机等状态的信息。语音通话平台(客户端) → 客户服务器(服务端)前提条件SP在开发应用时&#xff0c;若需订阅呼叫状态通…

MyBatis-Plus--解决逻辑删除与唯一索引的问题--方法/实例

文章目录简介问题复现依赖**建库建表**代码测试解决方案方案1&#xff1a;将字段设置为id&#xff08;推荐&#xff09;建库建表修改Entity测试方案2&#xff1a;将字段设置为当前时间&#xff08;不推荐&#xff09;建库建表修改Entity测试简介 说明 本文用示例介绍MyBatis-…

flash调用swf文件服务器,浏览器如何加载Flash文件? (SWF)

加载Flash文件有很多部分&#xff0c;更常见的是HTML页面。我将从HTML页面的顶部开始&#xff0c;我敦促其他人纠正我可能犯的任何错误。加载页面当收到HTML页面时&#xff0c;浏览器会将其解析为文档对象模型(DOM)&#xff0c;以便它具有每个元素的编程表示。浏览器遍历DOM树中…

Jenkins从配置到实践(2022尚硅谷Jenkins学习笔记)

文章目录 Jenkins从配置到实践1 持续集成 Continuous integration(CI)1.1 什么是持续集成?1.2 持续集成的原则2 Jenkins介绍2.1 Jenkins简介2.2 Jenkins自动化部署实现原理3 Jenkins部署环境3.1 GitLab3.1.1 安装需求3.1.2安装方式方式一:在ssh下安装GitLab方式二:使用Doc…

MybatisPlus 实体类与数据库表映射关系MybatisPlus:ORM思想

实体类与数据库表映射关系 使用mybatisPlus时&#xff0c;会确定实体类和数据的映射关系 具体的映射方法有两种 1、默认&#xff1a;采用驼峰映射规则 例如MyUserTable 对应的数据库表为 my_user_table ; TEMyUserTable 对应表名为t_e_my_user_table; 2、注解TableName 在…

Spring Boot——maven项目常用打包配置

文章目录一、简介二、pom.xml三、效果图3.1 所有的资源打包到指定的目录maven3.2 所有的配置文件都放到config目录3.3 所有的配置文件都不在jar里&#xff0c;防止敏感信息泄露结语一、简介 maven项目打包是我们程序员经常遇到的事&#xff0c;今天就来弄一个常用的打包方式&a…

史上最全ThreadLocal 详解

文章目录一、ThreadLocal简介二、ThreadLocal与Synchronized的区别三、ThreadLocal的简单使用四、ThreadLocal的原理4.1 ThreadLocal的set()方法&#xff1a;4.2 ThreadLocal的get方法4.3 ThreadLocal的remove方法4.4、ThreadLocal与Thread&#xff0c;ThreadLocalMap之间的关系…

Java递归构建树形结构

记录&#xff1a;在Java后台利用递归思路进行构建树形结构数据&#xff0c;返回给前端&#xff0c;能以下拉菜单等形式进行展示。 简明&#xff1a;为了简化代码&#xff0c;引入Lombok的Jar包&#xff0c;可省略实体类set()、get()方法。 <dependency><groupId>or…