Java流Stream-1:数据过滤filter

article/2025/10/31 10:09:14

重要:默认过滤数据实体对象时为引用传递。
(1)若修改过滤后的值,原始值会改变。
(2)若过滤后的数据需要变更,且原始值不受影响,需要过滤时新建对象。

1 filter方法

按照指定条件过滤数据,保留原始数据类型。

2 Usage

2.1 基础类型数据过滤

过滤字符串为例:构造List<String>

 /*** 1.1过滤数据:构造字符串列表.List<A>->List<A>*/@Testpublic void filterStringWithSpecificCondition() {List<String> list = Stream.of("female", "male", "female", "male").collect(Collectors.toList());logger.info(">>>>>>>>>>原始数据:\n{}", list);List<String> listAfterFilter = list.stream().filter(s -> null != s && !"male".equals(s)).collect(Collectors.toList());logger.info(">>>>>>>>>>过滤后的数据:\n{}", listAfterFilter);}

在这里插入图片描述

2.2 对象过滤

过滤对象中满足条件的数据,返回对象

  • 测试样例
/*** 1.2过滤数据:构造实体列表.List<A>->List<A>*/@Testpublic void  filterEntityWithSpecificCondition() {List<UserEntity> userEntityList = new ArrayList<>();userEntityList.add(new UserEntity("1", "111", "male"));userEntityList.add(new UserEntity("2", "222", "female"));userEntityList.add(new UserEntity("3", "333", "male"));userEntityList.add(new UserEntity("4", "444", "female"));logger.info(">>>>>>>>>>原始数据:\n{}", userEntityList);List<UserEntity> listAfterFilter = userEntityList.stream().filter(s -> null != s && !"male".equals(s.getSex())).collect(Collectors.toList());logger.info(">>>>>>>>>>过滤后的数据:\n" + listAfterFilter);}
  • 测试结果在这里插入图片描述
  • 引用传递
    过滤后的数据为仍为原始的对象,因此,修改过滤后的数据,原始数据同时会变化,如果原始数据有其他用途,则需要在过滤时新建对象,保证值传递。
    在这里插入图片描述
  • 值传递
    /*** 1.3过滤数据:构造实体列表,创建新对象.List<A>->List<A>*/@Testpublic void  filterEntityWithSpecificConditionAndCreateNewObject() {List<UserEntity> userEntityList = new ArrayList<>();userEntityList.add(new UserEntity("1", "111", "male"));userEntityList.add(new UserEntity("2", "222", "female"));userEntityList.add(new UserEntity("3", "333", "male"));userEntityList.add(new UserEntity("4", "444", "female"));logger.info(">>>>>>>>>>原始数据:\n{}", userEntityList);List<UserEntity> listAfterFilter = userEntityList.stream().filter(s -> null != s && !"male".equals(s.getSex())).map(UserEntity::copy).collect(Collectors.toList());logger.info(">>>>>>>>>>过滤后的数据:\n" + listAfterFilter);}
  • UserEntity
package com.monkey.java_study.common.entity;/*** User实体** @author xindaqi* @since 2021-01-23*/public class UserEntity {/*** 用户id*/private String uid;/*** 用户名称*/private String nickname;/*** 用户性别*/private String sex = "haha";public UserEntity() {}public UserEntity(String uid) {this.uid = uid;}public UserEntity(String uid, String nickname, String sex) {this.uid = uid;this.nickname = nickname;this.sex = sex;}public UserEntity copy() {return new UserEntity(uid, nickname, sex);}public String getUid() {return uid;}public void setUid(String uid) {this.uid = uid;}public String getNickname() {return nickname;}public void setNickname(String nickname) {this.nickname = nickname;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}@Overridepublic String toString() {return "UserEntity{" +"uid=" + uid +", nickname='" + nickname + '\'' +", sex='" + sex + '\'' +'}';}
}

在这里插入图片描述

3 完整样例

package com.monkey.java_study.functiontest;import com.monkey.java_study.common.entity.UserEntity;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;/*** Stream测试.** @author xindaqi* @date 2021-10-15 10:06*/
public class StreamTest {private static final Logger logger = LoggerFactory.getLogger(StreamTest.class);/*** 1.1过滤数据:构造字符串列表.List<A>->List<A>*/@Testpublic void filterStringWithSpecificCondition() {List<String> list = Stream.of("female", "male", "female", "male").collect(Collectors.toList());logger.info(">>>>>>>>>>原始数据:\n{}", list);List<String> listAfterFilter = list.stream().filter(s -> null != s && !"male".equals(s)).collect(Collectors.toList());logger.info(">>>>>>>>>>过滤后的数据:\n{}", listAfterFilter);}/*** 1.2过滤数据:构造实体列表.List<A>->List<A>*/@Testpublic void  filterEntityWithSpecificCondition() {List<UserEntity> userEntityList = new ArrayList<>();userEntityList.add(new UserEntity("1", "111", "male"));userEntityList.add(new UserEntity("2", "222", "female"));userEntityList.add(new UserEntity("3", "333", "male"));userEntityList.add(new UserEntity("4", "444", "female"));logger.info(">>>>>>>>>>原始数据:\n{}", userEntityList);List<UserEntity> listAfterFilter = userEntityList.stream().filter(s -> null != s && !"male".equals(s.getSex())).collect(Collectors.toList());logger.info(">>>>>>>>>>过滤后的数据:\n" + listAfterFilter);}/*** 1.3过滤数据:构造实体列表,创建新对象.List<A>->List<A>*/@Testpublic void  filterEntityWithSpecificConditionAndCreateNewObject() {List<UserEntity> userEntityList = new ArrayList<>();userEntityList.add(new UserEntity("1", "111", "male"));userEntityList.add(new UserEntity("2", "222", "female"));userEntityList.add(new UserEntity("3", "333", "male"));userEntityList.add(new UserEntity("4", "444", "female"));logger.info(">>>>>>>>>>原始数据:\n{}", userEntityList);List<UserEntity> listAfterFilter = userEntityList.stream().filter(s -> null != s && !"male".equals(s.getSex())).map(UserEntity::copy).collect(Collectors.toList());logger.info(">>>>>>>>>>过滤后的数据:\n" + listAfterFilter);}
}

http://chatgpt.dhexx.cn/article/xW0dTFC9.shtml

相关文章

【Python数据分析与处理 实训02】 ---2012欧洲杯信息分析(数据过滤与排序)

【Python数据分析与处理 实训02】 —2012欧洲杯信息分析&#xff08;数据过滤与排序&#xff09; 探索2012欧洲杯信息 对于下面的数据集进行简单的一些数据的分析训练 若需要源数据请私信~ 读取数据 euro12 pd.read_csv("G:\Projects\pycharmeProject\大数据比赛\泰迪…

【SQL语法基础】数据过滤:SQL数据过滤都有哪些方法?

我在上篇文章中讲到过&#xff0c;提升查询效率的一个很重要的方式&#xff0c;就是约束返回结果的数量&#xff0c;还有一个很有效的方式&#xff0c;就是指定筛选条件&#xff0c;进行过滤。过滤可以筛选符合条件的结果&#xff0c;并进行返回&#xff0c;减少不必要的数据行…

若依ruoyiAOP切面用于数据过滤和权限处理实例

目录 1.什么是AOP 简介 2.若依的AOP实现 2.1若依数据过滤AOP 定义注解 实现切面类 2.2数据源AOP 1.什么是AOP 简介 AOP为Aspect Oriented Programming的缩写&#xff0c;意为&#xff1a;面向切面编程&#xff0c;通过预编译方式和运行期间动态代理实现程序功能的统一…

FineReport-数据过滤权限设置

目的本省份的人只能看到某表单属于该省份的数据 安徽只能看到安徽的数据 一、在数据库中建立一张权限对应表&#xff0c;该表字段包含帆软登录用户名、省份名称即可 二、在帆软报表模板数据集中设置过滤 select * from table1 t1 left join table2 t2 on t1.MZt2.USERNAME w…

布隆过滤器(亿级数据过滤算法)

介绍 我们以演进的方式来逐渐认识布隆过滤器。先抛出一个问题爬虫系统中URL是怎么判重的&#xff1f;你可能最先想到的是将URL放到一个set中&#xff0c;但是当数据很多的时候&#xff0c;放在set中是不现实的。 这时你就可能想到用数组hash函数来实现了。 index hash(URL)…

Pandas的数据过滤

作者|Amanda Iglesias Moreno 编译|VK 来源|Towards Datas Science 从数据帧中过滤数据是清理数据时最常见的操作之一。Pandas提供了一系列根据行和列的位置和标签选择数据的方法。此外,Pandas还允许你根据列类型获取数据子集,并使用布尔索引筛选行。 在本文中,我们将介绍…

数据过滤:SQL数据过滤都有哪些方法?

我在上篇文章中讲到过&#xff0c;提升查询效率的一个很重要的方式&#xff0c;就是约束返回结果的数量&#xff0c;还有一个很有效的方式&#xff0c;就是指定筛选条件&#xff0c;进行过滤。过滤可以筛选符合条件的结果&#xff0c;并进行返回&#xff0c;减少不必要的数据行…

数据过滤(MySQL)

数据过滤 数据过滤用在WHERE表达式里&#xff0c;常用的有基本查询过滤、条件查询过滤、模糊查询过滤、字段查询过滤以及正则表达式查询过滤。 一、基本查询过滤 基本查询过滤可以查询所有字段数据或指定一个字段或者多个字段的数据。 附带建表 mysql> create table use…

掌握这些数据过滤的技巧,再复杂的业务数据也能高效处理!

随着互联网的飞速发展&#xff0c;呈爆炸式增长的数据使用户逐渐迷失在了信息的海洋之中&#xff0c;在进行数据分析时&#xff0c;海量的业务数据往往会带来一些问题&#xff1a; 准确性差&#xff1a;无效数据以及无需进行分析的数据混杂在其中&#xff0c;导致分析结果与实际…

阿里云服务器初始化

初始化阿里云服务器 进入阿里云服务器&#xff0c;然后在 配置信息 点击 重新初始化磁盘 接着会出现一个提示框&#xff0c;点击 确认 即可 进入实例云盘中&#xff0c;点击 重新初始化磁盘 然后设置密码 完成这一步后&#xff0c;输入手机验证码。这时阿里云服务器就被初始…

腾讯云服务器如何开启虚拟化,腾讯云服务器虚拟化驱动是什么

腾讯云服务器虚拟化驱动是什么&#xff1f; 云服务器虚拟化驱动&#xff0c;为腾讯自研开发&#xff0c;专门用于虚拟化效率提升的驱动程序&#xff0c;云服务器虚拟化驱动在linux系统中驱动文件名是pvdriver&#xff0c;安装路径:/usr/local/qcloud/pvdriver/bin&#xff0c;在…

金山办公CEO章庆元:数字化、云化、订阅化趋势下,组织数字办公走向纵深

关注ITValue&#xff0c;看企业级最新鲜、最价值报道&#xff01; 企业办公行业今年有3个关键词——数字化、云化、订阅化。 从数字化来说&#xff0c;国家十四五规划明确提出了“加快建设数字经济、数字社会、数字政府&#xff0c;以数字化转型整体驱动生产方式、生活方式和治…

物联网端-云一体化应用管理解决方案

近年来&#xff0c;随着云计算的发展&#xff0c;“云边端一体化”、“云端协同”等词也频繁出现在大众眼。 什么是“端-云一体化”&#xff1f; 这里我们拆开来解释&#xff1a; 云&#xff1a;云计算、云数据中心&#xff1b; 端&#xff1a;指的是终端。 合起来的意思就是…

CloudCore引领核心网云化转型

文/刘皓 2015年7月&#xff0c;全球著名咨询公司IHS Infonetics发布最新NFV&#xff08;Network Functions Virtualization&#xff0c;网络功能虚拟化&#xff09;市场调研报告。报告显示&#xff0c;NFV市场空间将从2014年的9.5亿美元增长到2019年的116亿美元&#xff0c;年…

全面推进云化,使能数字化转型 ——徐直军在2016华为全球分析师大会上的发言

文/徐直军 女士们、先生们&#xff0c;各位老朋友、新朋友&#xff0c;大家上午好&#xff01;非常高兴在同样的地点跟各位老朋友再相会&#xff0c;也非常欢迎各位新朋友来参加华为2016年的分析师大会。 这次大会的组委会给我定的主题是《全面推进云化&#xff0c;使能数字化转…

阿里云人物动漫化

简介 使用阿里云人物动漫化功能制作一款属于自己的专属头像(该功能收费) 功能描述 人物动漫化能力可以将一张人物图像进行转换处理&#xff0c;生成二次元卡通形象&#xff0c;并返回动漫化后的结果图像。效果示例如下。 原图&#xff1a; 日漫风结果图&#xff1a; 3D特效结…

服务器虚拟化与云平台,虚拟服务器和云有哪些区别

原标题&#xff1a;虚拟服务器和云有哪些区别 虚拟服务器和云有哪些区别&#xff1f;如果不是专业的人员&#xff0c;其实对于服务器是搞不懂的&#xff0c;其实虚拟服务器和云都是对硬件的抽象&#xff0c;两者都有很多好处和使用的理由&#xff0c;那么服务器虚拟化和云的区别…

腾云忆想构建云化IT生态,助力我国“双循环经济”数字化升级

新冠肺炎疫情全球蔓延,世界经济与国际局势瞬息万变。时局变化之中展望“十四五”,我国逐步形成了以国内大循环为主体、国内国际双循环相互促进的新发展格局。在新时局中,数字经济是重要的支撑力量,产业的数字化转型成为不可逆的趋势。 面对时代变局,腾云忆想紧抓历史机遇,与腾…

欢迎参与2020年云栖大会——引领企业基础设施云化

**简介&#xff1a;**2020年9月18日&#xff0c;阿里云邀您参加2020年云栖大会——引领企业基础设施云化分会场。 2020年9月18日&#xff0c;阿里云邀您参加2020年云栖大会——引领企业基础设施云化分会场。 在数字新基建时代&#xff0c;IT基础设施成为企业数字化转型的一个瓶…

何朝曦:构建云化安全能力的三个建议

11月12日&#xff0c;深信服智安全创新峰会在云端拉开帷幕&#xff0c;深信服创始人&CEO何朝曦在《构建云化时代的安全能力》主题演讲中指出&#xff0c;业务云化已成为用户实现数字化转型与变革的重要方式&#xff0c;这种跨时代的变迁对用户的安全能力提出了更高的要求&a…