例如,我有以下列表。 其中包含多个Employee对象。 然后,我想根据Employee对象的名称对此列表进行模糊查询。 有什么好的解决办法吗?
例如,如果我输入的查询条件是“wang”,则应该返回只包含employee1的列表列表。
列表列表=new ArrayList (;
Employee employee1=new Employee (;
employee1. set name (王强);
employee1.setage(30;
list.add(employee1;
Employee employee2=new Employee (;
employee2.setname(lisi );
list.add(employee2;
employee2.setage(25;
方式1 :
publiclistsearch (字符串名称,列表) {
列表结果=new ArrayList (;
pattern pattern=pattern.com pile (name;
for(intI=0; i list.size (; I ) {
matchermatcher=pattern.matcher () ) (employee list.get (I ) ).getName ) );
if(Matcher.Matches () ) ) )。
results.add(list.get(I ) );
}
}
返回结果;
}
上面的那个大小写很敏感。 如果要求大小写不敏感,请更改为
pattern pattern=pattern.com pile (name,Pattern.CASE_INSENSITIVE;
上面的那个是精确的查询,如果进行模糊匹配,matcher.find )可以进行模糊匹配
publiclistsearch (字符串名称,列表) {
列表结果=new ArrayList (;
pattern pattern=pattern.com pile (name;
for(intI=0; i list.size (; I ) {
matchermatcher=pattern.matcher () ) (employee list.get (I ) ).getName ) );
if(Matcher.find () ) ) )。
results.add(list.get(I ) );
}
}
返回结果;
}
方式2 :
公共类列表like {
//定义员工类
公共类员工{
私有字符串名称;
私密int age;
公共int get age () {
返回age;
}
公共语音设置(intage ) {
this.age=age;
}
公共字符串getname
返回名称;
}
公共语音集名称(字符串名称) {
this.name=name;
}
}
公共列表列表=new ArrayList (;
//增加工作人员
publiclistaddlist (字符串名称,int age ) {
Employee employee1=new Employee (;
电子邮件1.set name (name;
employee1.setage(age;
list.add(employee1;
返回列表;
}
//查看所有员工
公共语音显示列表(
for(intI=0; I
system.out.println((Employee ) ) list.get (I ) ).getName ) ') employee ) ).getAge )。
}
}
//模糊搜索
publiclistlikestring (字符串名称)。
for(intI=0; I
if () (employee ) ) list.get(i ) I ) ).getName ).index of (likename )=-1 ) )。
list.remove(I;
}
返回列表;
}
publicstaticvoidmain (字符串arg [ ] ) {
ListLike ll=new ListLike (;
ll.addlist(Wuxiao ),13 );
ll.addlist (王),11 );
ll.addlist(Wanghua ),12 );
ll.addlist ('小王',13 );
ll.addlist (小晓),13;
ll.likestring(Wang );
ll.ShowList (;
}
}
以上是java List中模糊查询实现方法的全部内容。 请支持编剧~