어떻게 자바 List 에서 모호 한 조 회 를 진행 합 니까?

예 를 들 어 저 는 아래 의 List 가 있 는데 그 안에 여러 개의 Employee 대상 이 저장 되 어 있 습 니 다.그리고 이 List 에 대해 Employee 대상 의 이름 에 따라 모호 하 게 조회 하고 싶 습 니 다.무슨 좋 은 해결 방안 이 있 습 니까?예 를 들 어 제 가 입력 한 조회 조건 이 'wang' 이 라면 employee 1 만 포 함 된 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);

방식 1:
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;
}

방식 2:
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();


}

}

좋은 웹페이지 즐겨찾기