java中实现对list的模糊查询

比如我有下面这样一个List,里面存放的是多个Employee对象。然后我想对这个List进行按照Employee对象的名字进行模糊查询。有什么好的解决方案么?
比如我输入的查询条件为“wang”,那么应该返回只包含employee1的List列表。

1List list = new ArrayList(); 2Employee employee1 = new Employee(); 3employee1.setName("wangqiang"); 4employee1.setAge(30); 5list.add(employee1); 6Employee employee2 = new Employee(); 7employee2.setName("lisi"); 8list.add(employee2); 9employee2.setAge(25);

方式一:

1public List search(String name,List list){ 2 List results = new ArrayList(); 3 Pattern pattern = Pattern.compile(name); 4 for(int i=0; i < list.size(); i++){ 5 Matcher matcher = pattern.matcher(((Employee)list.get(i)).getName()); 6 if(matcher.matches()){ 7 results.add(list.get(i)); 8 } 9 } 10 return results; 11}

上面那个是大小写敏感的,如果要求大小写不敏感,改成:
Pattern pattern = Pattern.compile(name,Pattern.CASE_INSENSITIVE);

并且上面那个是精确查询,如果要模糊匹配,matcher.find()即可以进行模糊匹配。

1public List search(String name,List list){ 2 List results = new ArrayList(); 3 Pattern pattern = Pattern.compile(name); 4 for(int i=0; i < list.size(); i++){ 5 Matcher matcher = pattern.matcher(((Employee)list.get(i)).getName()); 6 if(matcher.find()){ 7 results.add(list.get(i)); 8 } 9 } 10 return results; 11}

 方式二:

1public class ListLike { 2 3//定义员工类 4public class Employee { 5private String name; 6private int age; 7public int getAge() { 8return age; 9} 10public void setAge(int age) { 11this.age = age; 12} 13public String getName() { 14return name; 15} 16public void setName(String name) { 17this.name = name; 18} 19} 20 21public List list=new ArrayList(); 22 23//增加员工 24public List addList(String name,int age){ 25Employee employee1 = new Employee(); 26employee1.setName(name); 27employee1.setAge(age); 28list.add(employee1); 29return list; 30} 31 32//显示所有员工 33public void ShowList(){ 34for(int i=0;i<list.size();i++){ 35System.out.println(((Employee)(list.get(i))).getName()+" "+((Employee)(list.get(i))).getAge()); 36} 37} 38 39//模糊查询 40public List likeString(String likename){ 41for(int i=0;i<list.size();i++){ 42if(((Employee)(list.get(i))).getName().indexOf(likename)<=-1) 43list.remove(i); 44} 45return list; 46 47} 48 49public static void main(String arg[]){ 50ListLike ll=new ListLike(); 51ll.addList("wuxiao",13); 52ll.addList("wangwang",11); 53ll.addList("wanghua",12); 54ll.addList("xiaowang",13); 55ll.addList("xiaoxiao",13); 56 57ll.likeString("wang"); 58ll.ShowList(); 59 60 61} 62 63}
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java8新特性

Stream将List转换为Map,使用Collectors.toMap方法进行转换背景:User类,类中分别有id,name,age三个属性。List集合,userList,存储User对象1、指定keyvalue,value是对象中的某个属性值。 Map<Integer,StringuserMap1userList.str

List的Select 和Select().tolist()

List<PersondelpnewList<Person{newPerson{Id1,Name"小明1",Age11,Sign0},newPerson{Id2,Name"小明2",Age12,

Java开发者容易犯的十个错误

!(https://oscimg.oschina.net/oscnet/c9f00cc918684fbe8a865119d104090b.gif)Top1.数组转换为数组列表将数组转换为数组列表,开发者经常会这样做:\java\List<StringlistArrays.asList(arr);Arr