千家信息网

Java如何利用反射对list对象做过滤

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,小编给大家分享一下Java如何利用反射对list对象做过滤,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!反射对效率有影响 慎用!!!1.对象结构public class Busine
千家信息网最后更新 2025年02月02日Java如何利用反射对list对象做过滤

小编给大家分享一下Java如何利用反射对list对象做过滤,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

反射对效率有影响 慎用!!!

1.对象结构

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 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;}}

2.根据字段名获取value

public  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;}

3.对list过滤

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);}}

4.精确匹配

//精确匹配private List filterExact(String name,T t,List businessDepts){if(t.toString().isEmpty()){return businessDepts;}List list = new ArrayList();if(businessDepts.size()>0){for(int i = 0;i

5.模糊匹配

//模糊匹配private List filterVague(String name,String s,List businessDepts){if(s.isEmpty()){return businessDepts;}List list = new ArrayList();if(businessDepts.size()>0){for(int i = 0;i

看完了这篇文章,相信你对"Java如何利用反射对list对象做过滤"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

0