List集合中模糊查询
1.说明
如何在List集合中进行模糊查找。集合当中的用法大致一样,下面演示在List集合的ArrayList集合下的模糊查找方式。
拥有大小写敏感与大小写不敏感的方法,下面就是不敏感的使用方式:
public ArrayList search(String name,ArrayList arrayList){
ArrayList arraySearch = new ArrayList();
//该处决定大小写是否敏感
Pattern pattern = Pattern.compile(name,Pattern.CASE_INSENSITIVE);
for(int i=0; i < arrayList; i++){
Matcher matcher = pattern.matcher(((Employee)arrayList.get(i)).getName());
if(matcher.matches()){
arraySearch.add(list.get(i));
}
}
return arraySearch;
}
若要换成敏感就把:
Pattern pattern = Pattern.compile(name,Pattern.CASE_INSENSITIVE);
改成即可:
Pattern pattern = Pattern.compile(name);
2.示例
2.1示例代码
下面就是一个完整的示例:
public class Demo1{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//用于存储原始数据
ArrayList<Book> arrayList = new ArrayList<>();
//用于存储查找的的数据
ArrayList<Book> arraySearch = new ArrayList<>();
//把数据存入集合
Book book1 = new Book("平凡的世界");
Book book2 = new Book("月亮与六便士");
Book book3 = new Book("平凡的六便士");
Book book4 = new Book("月亮与世界");
Book book5 = new Book("平凡的世界和月亮与六便士");
arrayList.add(book1);
arrayList.add(book2);
arrayList.add(book3);
arrayList.add(book4);
arrayList.add(book5);
//开始模糊查找数据
System.out.println("请输入您需要查找的图书名称:");
String lookBook = input.nextLine();
Pattern pattern = Pattern.compile(lookBook,Pattern.CASE_INSENSITIVE);
for(int i=0;i<arrayList.size();i++){
Matcher matcher = pattern.matcher(arrayList.get(i).getBooklist());
if(matcher.find()){
//把找到的图书放入arraySearch集合
arraySearch.add(arrayList.get(i));
}
}
//使用foreach进行迭代
for (Book a:arraySearch) {
System.out.println(a);
}
}
//创建的Book类
public static class Book{
private String booklist;
public Book() {
}
//全参构造方法
public Book(String booklist) {
this.booklist = booklist;
}
public String getBooklist() {
return booklist;
}
public void setBooklist(String booklist) {
this.booklist = booklist;
}
@Override
public String toString() {
return "Book{" +
"booklist='" + booklist + '\'' +
'}';
}
}
}
2.2示例结果
得到的结果就是
请输入您需要查找的图书名称:
平凡
Book{booklist='平凡的世界'}
Book{booklist='平凡的六便士'}
Book{booklist='平凡的世界和月亮与六便士'}