在java List中进行模糊查询的实现方法
比如我有下面这样一个list,里面存放的是多个employee对象。然后我想对这个list进行按照employee对象的名字进行模糊查询。有什么好的解决方案么?
比如我输入的查询条件为“wang”,那么应该返回只包含employee1的list列表。
list list = new arraylist(); employee employee1 = new employee(); employee1.setname("wangqiang"); employee1.setage(30); list.add(employee1); employee employee2 = new employee(); employee2.setname("lisi"); list.add(employee2); employee2.setage(25);
方式一:
public list search(string name,list list){ list results = new arraylist(); pattern pattern = pattern.compile(name); for(int i=0; i < list.size(); i++){ matcher matcher = pattern.matcher(((employee)list.get(i)).getname()); if(matcher.matches()){ results.add(list.get(i)); } } return results; }
上面那个是大小写敏感的,如果要求大小写不敏感,改成:
pattern pattern = pattern.compile(name,pattern.case_insensitive);
并且上面那个是精确查询,如果要模糊匹配,matcher.find()即可以进行模糊匹配
public list search(string name,list list){ list results = new arraylist(); pattern pattern = pattern.compile(name); for(int i=0; i < list.size(); i++){ matcher matcher = pattern.matcher(((employee)list.get(i)).getname()); if(matcher.find()){ results.add(list.get(i)); } } return results; }
方式二:
public class listlike { //定义员工类 public class employee { private string name; private int age; public int getage() { return age; } public void setage(int age) { this.age = age; } public string getname() { return name; } public void setname(string name) { this.name = name; } } public list list=new arraylist(); //增加员工 public list addlist(string name,int age){ employee employee1 = new employee(); employee1.setname(name); employee1.setage(age); list.add(employee1); return list; } //显示所有员工 public void showlist(){ for(int i=0;i<list.size();i++){ system.out.println(((employee)(list.get(i))).getname()+" "+((employee)(list.get(i))).getage()); } } //模糊查询 public list likestring(string likename){ for(int i=0;i<list.size();i++){ if(((employee)(list.get(i))).getname().indexof(likename)<=-1) list.remove(i); } return list; } public static void main(string arg[]){ listlike ll=new listlike(); ll.addlist("wuxiao",13); ll.addlist("wangwang",11); ll.addlist("wanghua",12); ll.addlist("xiaowang",13); ll.addlist("xiaoxiao",13); ll.likestring("wang"); ll.showlist(); } }
https://jiuaidu.com/jianzhan/725401/
个人学习笔记,记录日常学习,便于查阅及加深,仅为方便个人使用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
2019-01-10 设计模式分类