日期:2014-05-20  浏览次数:20759 次

如何在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);
------解决方案--------------------
刚才我试了,输入wang查寻不到,wangqiang可以,这个是模糊查询吗?
------解决方案--------------------
学习
------解决方案--------------------
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();


}

}