java list.stream处理对象集合,根据模糊匹配、IN操作来过滤

在Java中,如果你有一个机构对象(比如Agency)的集合,并且你想根据机构名称的模糊匹配、机构类型以及机构ID的IN操作来过滤这个集合,你可以使用Java 8及以上版本的Stream API来实现。不过,对于机构ID的IN操作,你需要一个包含所需ID的集合。

以下是一个示例,展示了如何实现这样的过滤:

import java.util.ArrayList;  
import java.util.Arrays;  
import java.util.List;  
import java.util.stream.Collectors;  // 假设这是你的Agency类  
class Agency {  private int id;  private String name;  private String type;  // 构造函数、getter和setter省略...  public Agency(int id, String name, String type) {  this.id = id;  this.name = name;  this.type = type;  }  public int getId() {  return id;  }  public String getName() {  return name;  }  public String getType() {  return type;  }  // ...其他方法  
}  public class AgencyFilterExample {  public static void main(String[] args) {  // 假设这是你的机构集合  List<Agency> agencies = Arrays.asList(  new Agency(1, "教育部", "政府"),  new Agency(2, "北京大学", "教育"),  new Agency(3, "清华大学", "教育"),  new Agency(4, "国家科学院", "科研"),  new Agency(5, "中央美术学院", "艺术"),  new Agency(6, "中科院物理所", "科研")  );  // 要搜索的机构名称关键字(模糊匹配)  String searchName = "科学";  // 要匹配的机构类型  String searchType = "科研";  // 要包含的机构ID列表  List<Integer> idsToInclude = Arrays.asList(4, 6);  // 使用Stream API进行过滤  List<Agency> filteredAgencies = agencies.stream()  .filter(agency ->   // 模糊匹配机构名称  agency.getName().contains(searchName) &&  // 匹配机构类型  agency.getType().equals(searchType) &&  // 机构ID在指定列表中  idsToInclude.contains(agency.getId())  )  .collect(Collectors.toList());  // 打印结果  for (Agency agency : filteredAgencies) {  System.out.println("ID: " + agency.getId() + ", Name: " + agency.getName() + ", Type: " + agency.getType());  }  }  
}

然而,请注意,上面的代码示例中,机构名称的模糊匹配、机构类型的精确匹配和机构ID的IN操作是同时进行的,这意味着只有同时满足这三个条件的机构才会被包含在结果中。

如果你的意图是分别应用这些条件(例如,只应用机构名称的模糊匹配,或者同时应用机构名称的模糊匹配和机构类型的精确匹配,但不考虑机构ID的IN操作),你需要相应地调整filter方法中的条件逻辑。

此外,对于大型数据集,频繁地在filter中调用idsToInclude.contains(agency.getId())可能会影响性能,因为这会导致对idsToInclude列表的线性搜索。如果idsToInclude列表很大,或者过滤操作非常频繁,你可能需要考虑使用更高效的数据结构(如HashSet)来存储要包含的ID。

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

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

相关文章

Unity显示泰语且兼容泰语音标

前言&#xff1a;使用Unity开发的游戏需要支持泰语本地化&#xff0c;以及解决显示泰语时Unity的bug 目录 1、Text组件显示泰语2、TextMeshPro组件显示泰语 现在很多游戏都需要显示泰语&#xff0c;下面将介绍Unity如何显示泰语&#xff0c;&#xff08;仅介绍Unity字体方面的设…

npm 安装报错(已解决)+ 运行 “wue-cli-service”不是内部或外部命令,也不是可运行的程序(已解决)

首先先说一下我这个项目是3年前的一个项目了&#xff0c;中间也是经过了多个人的修改惨咋了布置多少个人的思想&#xff0c;这这道我手里直接npm都安装不上&#xff0c;在网上也查询了多种方法&#xff0c;终于是找到问题所在了 问题1&#xff1a; 先是npm i 报错在下面图片&…

Microsoft 365 Office BusinessPro LTSC 2024 for Mac( 微软Office办公套件)

Microsoft 365 Office BusinessPro LTSC 2024是一款专为商业用户设计的办公软件套件&#xff0c;它集成了Word、Excel、PowerPoint等核心应用&#xff0c;并特别包含了Microsoft Teams这一强大的协作工具。Teams将聊天、会议、文件共享、任务管理等功能整合到一个平台上&#x…

TypeScript 基本用法、any、unknown、never、class、类型断言、数组、接口

大家好&#xff0c;我是有用就扩散&#xff0c;有用就点赞。 TypeScript 基本用法 类型声明 1&#xff09;类型声明的写法&#xff0c;一律为在标识符后面添加“冒号 类型”。函数参数和返回值&#xff0c;也是这样来声明类型。 2&#xff09;TypeScript 规定&#xff0c;变…

AI+HPC 部署优化面试范围分享

背景 最近几年生成式AI技术和自动驾驶技术发展发展很快&#xff0c;这些行业对于算法的运行效率有很高的要求&#xff0c;尤其一个模型在训练完成后运行到设备上&#xff0c;需要大量的工作&#xff0c;包括模型的剪枝、蒸馏、压缩、量化、算子优化、系统优化等。 对于传统的…

Go基础编程 - 12 -流程控制

流程控制 1. 条件语句1.1. if...else 语句1.2. switch 语句1.3. select 语句1.3.1. select 语句的通信表达式1.3.2. select 的基特性1.3.3. select 的实现原理1.3.4. 经典用法1.3.4.1 超时控制1.3.4.2 多任务并发控制1.3.4.3 监听多通道消息1.3.4.4 default 实现非堵塞读写 2. …

FPGA读写操作SRAM_CY7C1051DV33

手上有一块sram需要验证下功能是否正常&#xff0c;我门通过fpga来进行读写测试。 1.首先看下芯片手册&#xff0c;我们重点关注时序部分 总结下&#xff0c;就是读写时间不能小于10nS,也就是最高频率100M&#xff0c;所以我们程序设计按100M时钟速率进行设计。注意&#x…

构建稳固与安全的网络环境:从微软蓝屏事件看软件更新流程与应急响应

“微软蓝屏”事件暴露了网络安全哪些问题&#xff1f; 近日&#xff0c;由微软视窗系统软件更新引发的全球性“微软蓝屏”事件&#xff0c;不仅让科技领域为之震动&#xff0c;更是一次对全球IT基础设施韧性与安全性的深刻检验。这次事件源于美国电脑安全技术公司“众击”的一…

2024-07-23 Unity插件 Odin Inspector11 —— 使用 Odin 自定义编辑窗口

文章目录 1 OdinEditorWindow1.1 运作方式1.2 使用特性绘制 OdinEditorWindow1.3 在 OdinEditorWindow 中渲染对象 2 OdinMenuEditorWindow2.1 添加菜单导航栏2.2 添加导航栏示例 ​ Odin Window 可以完整地访问 Odin 绘图系统&#xff0c;不再需要操心 Window 的绘制 方式&am…

BGP选路之Local Preference

原理概述 当一台BGP路由器中存在多条去往同一目标网络的BGP路由时&#xff0c;BGP协议会对这些BGP路由的属性进行比较&#xff0c;以确定去往该目标网络的最优BGP路由。BGP首先比较的是路由信息的首选值&#xff08;PrefVal)&#xff0c;如果 PrefVal相同&#xff0c;就会比较本…

全方位了解智慧校园行政办公的新闻管理功能

在智慧校园的日常运营中&#xff0c;行政办公系统中的新闻公告功能犹如一座沟通的桥梁&#xff0c;连接着校园内外的每一个角落&#xff0c;传递着最新的资讯与动态。它不仅是智慧校园信息发布的平台&#xff0c;更是校园文化与精神风貌的展现窗口&#xff0c;对于增强师生的凝…

JavaWeb(4)JavaScript入门2—— JS的对象和JSON

一、JS的对象 1.声明语法1 通过new Object()直接创建对象 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><ti…

C#与C++交互开发系列(三):深入探讨P/Invoke基础知识

欢迎来到C#与C交互开发系列的第三篇。在这篇博客中&#xff0c;我们将深入探讨P/Invoke&#xff08;Platform Invocation Services&#xff09;的基础知识。P/Invoke是C#调用非托管代码的一种机制&#xff0c;能够让C#直接调用C编写的动态链接库&#xff08;DLL&#xff09;中的…

外六角半螺纹螺丝主要应用领域

外六角半螺纹螺丝&#xff0c;作为一种常见的紧固件&#xff0c;因其独特的设计和多样的功能而在多个工业领域中占据着重要的地位。这种螺丝的一端具有完整的螺纹&#xff0c;而另一端则可能没有螺纹或螺纹较短&#xff0c;这样的设计使其在某些应用场景中具有独特的优势。 应用…

MySQL入门学习-SQL高级技巧.CTE和递归查询

在 MySQL 中&#xff0c;SQL 高级技巧包括了 Common Table Expressions&#xff08;CTE&#xff09;和递归查询等。 一、CTE&#xff08;Common Table Expressions&#xff0c;公共表表达式&#xff09;的概念&#xff1a; CTE 是一个临时的结果集&#xff0c;它可以在一个查询…

docker文件挂载和宿主主机文件的关系

一、背景 在排查docker日志时发现在读取docker的文件时找不到文件&#xff0c;在宿主主机上可以查到对应的文件。这里就要理解docker文件目录和宿主主机上的文件的关系。 二、Docker文件系统和宿主系统 Docker文件和宿主文件之间的关系主要体现在Docker容器的运行环境中。Docke…

【目录】8051汇编与C语言系列教程

8051汇编与C语言系列教程 作者将狼才鲸创建日期2024-07-23 CSDN文章地址&#xff1a;【目录】8051汇编与C语言系列教程本Gitee仓库原始地址&#xff1a;才鲸嵌入式/8051_c51_单片机从汇编到C_从Boot到应用实践教程 一、本教程目录 序号教程名称简述教程链接1点亮LCD灯通过IO…

【分布式锁】Redission实现分布式锁

接着上一节&#xff0c;我们遇到了超卖的问题&#xff0c;并通过Redis实现分布式锁&#xff0c;进行了解决。本节 我将换一种方式实现分布式锁。 前提&#xff1a; nginx、redis、nacos 模块1&#xff1a; provider-and-consumer 端口 8023 模块2 rabbitmq-consumer 端口 8021 …

应用平台DDOS攻击如何解决

应用平台DDOS攻击如何解决&#xff1f;在开发并运营应用平台的征途中&#xff0c;我深知稳定与安全是通往成功的两大基石。随着业务的不断增长&#xff0c;我们也遭遇了网络世界中最令人头疼的挑战之一——DDoS攻击。这段经历让我深刻体会到&#xff0c;拥有一个可靠的高防IP服…

微服务常用的中间件有哪些?都有什么用途?

前言 最近整理一下我们的项目使用了哪些中间件&#xff0c;借此机会也来分享一下&#xff0c;在微服务架构中我们常用的那些中间件&#xff0c;都有什么作用&#xff0c;为什么要使用中间件。 消息中间件-RocketMQ 比如RocketMQ&#xff0c;RocketMQ 是一个开源的分布式消息…