小编给大家分享一下Java如何利用反射对list对象做过滤,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!反射对效率有影响 慎用!!!1.对象结构public class BusinessDep
小编给大家分享一下Java如何利用反射对list对象做过滤,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
反射对效率有影响 慎用!!!
public class BusinessDept {private String year;//年private String month;//月private String deptName;//部门名称private String deptLeader;//部门负责人private Double jyz; //经营值private Double rev; //收入private Double exp; //支出private Double tWorkTime; //填报工时private Double sWorkTime; //标准工时private Double param; //经营参数public void setYear(String year) {this.year = year;}public void setMonth(String month) {this.month = month;}public void setDeptName(String deptName) {this.deptName = deptName;}public void setDeptLeader(String deptLeader) {this.deptLeader = deptLeader;}public void setJyz(Double jyz) {this.jyz = jyz;}public String getYear() {return year;}public String getMonth() {return month;}public String getDeptName() {return deptName;}public String getDeptLeader() {return deptLeader;}public Double getJyz() {return jyz;}public Double getRev() {return rev;}public Double getExp() {return exp;}public Double gettWorkTime() {return tWorkTime;}public Double getsWorkTime() {return sWorkTime;}public Double getParam() {return param;}public void setRev(Double rev) {this.rev = rev;}public void setExp(Double exp) {this.exp = exp;}public void settWorkTime(Double tWorkTime) {this.tWorkTime = tWorkTime;}public void setsWorkTime(Double sWorkTime) {this.sWorkTime = sWorkTime;}public void setParam(Double param) {this.param = param;}public <E> E get(String name) {Class cl = this.getClass();Field[] fields = cl.getDeclaredFields();try {for (Field field : fields) {field.setAccessible(true);if (field.getName().equals(name)) {return (E) field.get(this);}}} catch (IllegalAccessException e) {e.printStackTrace();}return null;}}
public <E> E get(String name) {Class cl = this.getClass();Field[] fields = cl.getDeclaredFields();try {for (Field field : fields) {field.setAccessible(true);if (field.getName().equals(name)) {return (E) field.get(this);}}} catch (IllegalAccessException e) {e.printStackTrace();}return null;}
List businessDeptList = this.myQuery();//筛选符合条件的listif (businessDeptList.size()>0){businessDeptList = this.filterExact("year",year,businessDeptList);businessDeptList = this.filterExact("month",month,businessDeptList);businessDeptList = this.filterVague("deptName",deptName,businessDeptList);businessDeptList = this.filterVague("deptLeader",deptLeader,businessDeptList);if(!StringUtils.isEmpty(jyz)){businessDeptList = this.filterExact("jyz",Double.parseDouble(jyz),businessDeptList);}if(!StringUtils.isEmpty(param)){businessDeptList = this.filterExact("param",Double.parseDouble(param),businessDeptList);}if(!StringUtils.isEmpty(sWorkTime)){businessDeptList = this.filterExact("sWorkTime",Double.parseDouble(sWorkTime),businessDeptList);}if(!StringUtils.isEmpty(rev)){businessDeptList = this.filterExact("rev",Double.parseDouble(rev),businessDeptList);}if(!StringUtils.isEmpty(exp)){businessDeptList = this.filterExact("exp",Double.parseDouble(exp),businessDeptList);}if(!StringUtils.isEmpty(tWorkTime)){businessDeptList = this.filterExact("tWorkTime",Double.parseDouble(tWorkTime),businessDeptList);}}
//精确匹配private <T>List<BusinessDept> filterExact(String name,T t,List<BusinessDept> businessDepts){if(t.toString().isEmpty()){return businessDepts;}List<BusinessDept> list = new ArrayList<BusinessDept>();if(businessDepts.size()>0){for(int i = 0;i<businessDepts.size();i++){if(businessDepts.get(i).get(name).equals(t)){list.add(businessDepts.get(i));}}}return list;}
//模糊匹配private List<BusinessDept> filterVague(String name,String s,List<BusinessDept> businessDepts){if(s.isEmpty()){return businessDepts;}List<BusinessDept> list = new ArrayList<BusinessDept>();if(businessDepts.size()>0){for(int i = 0;i<businessDepts.size();i++){if(businessDepts.get(i).get(name).toString().contains(s)){list.add(businessDepts.get(i));}}}return list;}
看完了这篇文章,相信你对“Java如何利用反射对list对象做过滤”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!
--结束END--
本文标题: Java如何利用反射对list对象做过滤
本文链接: https://www.lsjlt.com/news/325703.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-13
2024-05-13
2024-05-13
2024-05-13
2024-05-13
2024-05-13
2024-05-13
2024-05-13
2024-05-13
2024-05-13
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0