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> 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.根据字段名获取valuepublic <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;}
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 <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;}
5.模糊匹配//模糊匹配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对象做过滤的详细内容。
