欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java利用反射對(duì)list對(duì)象做過(guò)濾

 更新時(shí)間:2022年03月25日 14:30:05   作者:峰啊瘋了  
這篇文章主要介紹了Java利用反射對(duì)list對(duì)象做過(guò)濾,但是使用反射對(duì)效率有影響,但在一些特殊情況也有一定的參考價(jià)值,需要的小伙伴可以參考一下

#yyds干貨盤(pán)點(diǎn)#利用反射對(duì)list對(duì)象做過(guò)濾_sed

?反射對(duì)效率有影響 慎用?。?!?

1.對(duì)象結(jié)構(gòu)

public class BusinessDept {
private String year;//年
private String month;//月
private String deptName;//部門(mén)名稱
private String deptLeader;//部門(mén)負(fù)責(zé)人
private Double jyz; //經(jīng)營(yíng)值
private Double rev; //收入
private Double exp; //支出
private Double tWorkTime; //填報(bào)工時(shí)
private Double sWorkTime; //標(biāo)準(zhǔn)工時(shí)
private Double param; //經(jīng)營(yíng)參數(shù)

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.根據(jù)字段名獲取value

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

3.對(duì)list過(guò)濾

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.精確匹配

//精確匹配
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;
}

到此這篇關(guān)于Java利用反射對(duì)list對(duì)象做過(guò)濾的文章就介紹到這了,更多相關(guān)list對(duì)象過(guò)濾內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring框架之IOC介紹講解

    Spring框架之IOC介紹講解

    IOC-Inversion of Control,即控制反轉(zhuǎn)。它不是什么技術(shù),而是一種設(shè)計(jì)思想。這篇文章將為大家介紹一下Spring控制反轉(zhuǎn)IOC的原理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • lombok?子類中如何使用@Builder問(wèn)題

    lombok?子類中如何使用@Builder問(wèn)題

    這篇文章主要介紹了lombok?子類中如何使用@Builder問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Java實(shí)現(xiàn)七牛云文件圖片上傳下載

    Java實(shí)現(xiàn)七牛云文件圖片上傳下載

    本文主要介紹了Java實(shí)現(xiàn)七牛云文件圖片上傳下載,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Java8新特性:函數(shù)式編程

    Java8新特性:函數(shù)式編程

    Java8最新引入函數(shù)式編程概念,該項(xiàng)技術(shù)可以大大提升編碼效率,本文會(huì)對(duì)涉及的對(duì)象等進(jìn)行兩種方法的對(duì)比,對(duì)新技術(shù)更直白的看到變化,更方便學(xué)習(xí)
    2021-06-06
  • java抓包后對(duì)pcap文件解析示例

    java抓包后對(duì)pcap文件解析示例

    這篇文章主要介紹了java抓包后對(duì)pcap文件解析示例,需要的朋友可以參考下
    2014-03-03
  • java實(shí)現(xiàn)簡(jiǎn)單撲克牌游戲

    java實(shí)現(xiàn)簡(jiǎn)單撲克牌游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單撲克牌游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • 如何使用Jenkins構(gòu)建GIT+Maven項(xiàng)目

    如何使用Jenkins構(gòu)建GIT+Maven項(xiàng)目

    這篇文章主要介紹了如何使用Jenkins構(gòu)建GIT+Maven項(xiàng)目,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • spring cloud config分布式配置中心的高可用問(wèn)題

    spring cloud config分布式配置中心的高可用問(wèn)題

    本文給大家介紹spring cloud config分布式配置中心的高可用問(wèn)題,通過(guò)整合Eureka來(lái)實(shí)現(xiàn)配置中心的高可用,需要的朋友參考下本文
    2018-01-01
  • IDEA修改SVN地址的實(shí)現(xiàn)

    IDEA修改SVN地址的實(shí)現(xiàn)

    如果你正在使用SVN進(jìn)行版本控制,并且需要更改你的SVN地址,那么這篇文章將為你提供必要的步驟和指導(dǎo),感興趣的可以了解一下
    2023-12-12
  • Java并發(fā)編程之線程創(chuàng)建介紹

    Java并發(fā)編程之線程創(chuàng)建介紹

    這篇文章主要介紹了Java并發(fā)編程之線程創(chuàng)建,進(jìn)程是代碼在數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,線程則是一個(gè)實(shí)體,一個(gè)進(jìn)程中至少有一個(gè)線程,下文更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-04-04

最新評(píng)論