Java如何利用反射对list对象做过滤
作者:SunnyJourney
时间:2023-04-28
来源:互联网
浏览:0
反射对效率有影响慎用!!!1.对象结构publicclassBusinessDept{privateStringyear;//年privateStringmonth;//月privateStringdeptName;//部门名称privateStringdeptLeader;//部门负责人privateDoublejyz;//经营值privateDoublerev;//收入privateDoubleexp;//支出privateDoubletWorkTime;//填报工时privateDoublesWor

反射对效率有影响 慎用!!!
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
publicE 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();
//筛选符合条件的list
if (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.精确匹配
//精确匹配 privateList 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 ListfilterVague(String name,String s,List businessDepts){ if(s.isEmpty()){ return businessDepts; } List list = new ArrayList (); if(businessDepts.size()>0){ for(int i = 0;i
作者最新文章
图几
2026-09-16 17:43
SQL中ROUND函数对0.5的处理机制及强制四舍五入方法
2026-09-15 14:19
JS金额计算怎么避免四舍五入误差
2026-09-14 17:32
韩国8月携号转网数据:Galaxy Z8系列iPhone用户转化率约为Z7系列2倍
2026-09-08 17:02
AE基础教程:如何创建合成并制作关键帧动画
2026-09-04 09:27
上一篇:
java反射的原理是什么
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多
Windows 10
Windows
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式
Windows/macOS/Linux
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















