在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/

 

 

posted @   wq9  阅读(1027)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 从 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 设计模式分类
点击右上角即可分享
微信分享提示