最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java8如何根據(jù)某一屬性條件快速篩選list中的集合

 更新時間:2022年01月26日 10:28:58   作者:MyXieZhiXin  
這篇文章主要介紹了java8如何根據(jù)某一屬性條件快速篩選list中的集合,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

根據(jù)某一屬性條件快速篩選list中的集合

1、創(chuàng)建個Student對象

public class Student { 
    private String name;//姓名
    private Integer age;//年齡
    private int sex;//性別
    private String professional;//專業(yè) 
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public int getSex() {
        return sex;
    }
    public void setSex(int sex) {
        this.sex = sex;
    }
    public String getProfessional() {
        return professional;
    }
    public void setProfessional(String professional) {
        this.professional = professional;
    }
    public Student(String name, Integer age, int sex, String professional) {
        super();
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.professional = professional;
    }

2、編寫測試類

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors; 
public class StreamTest { 

    public static void main(String[] args) {
        List<Student> allList = new ArrayList<Student>(); 
        Student st1 = new Student("小王",26,1,"計算機(jī)");
        allList.add(st1);
        Student st2 = new Student("小張",21,1,"電氣");
        allList.add(st2);
        Student st3 = new Student("小紅",22,1,"人文");
        allList.add(st3);
        Student st4 = new Student("小李",23,1,"計算機(jī)");
        allList.add(st4);
 
        System.out.println("**************************目的:只取專業(yè)為計算機(jī)行業(yè)的集合*************************");
//        allList = allList.stream().filter(Student -> Student.getProfessional().equals("計算機(jī)")).collect(Collectors.toList());
//        allList.forEach(Student -> {
//            System.out.println(Student.getName());
//        });
        System.out.println("**************************目的:取專業(yè)為計算機(jī)和人文專業(yè)的集合*************************");
        List<String> str=new ArrayList<>();
        str.add("計算機(jī)");
        str.add("人文");
        allList = allList.stream().filter(Student -> str.contains(Student.getProfessional())).collect(Collectors.toList());
        allList.forEach(Student -> {
            System.out.println(Student.getName());
        }); 
    }

結(jié)果如下圖所示:

perfect ! 是不是比for循環(huán)遍歷取集合好用的多呢~ give a like?

list 根據(jù)實體屬性搜索

工具類如下所示,主要使用了泛型,反射

入?yún)ⅲ?/strong>

list,待查找的 list

field: 要根據(jù) list 中的哪個屬性來查找 ,如上面的 TestModel 中的 name/value

value: 要查找的值為什么,如"demo", 查找 list 中 name = demo 的那個數(shù)據(jù)

clazz: 泛型類的描述信息,也就是 TestModel

代碼

public static <T> List<T> containsByField(List<T> list ,String field,Object value,Class<T> clazz){
        List<T> res = new ArrayList<>();
        try {
	// 通過反射獲取對應(yīng)的屬性
            Field dbField = clazz.getDeclaredField(field);
	// 設(shè)置屬性為可訪問
            dbField.setAccessible(true);
            for (T t : list) {
	// 遍歷list,獲取到對應(yīng)屬性的值
                Object o = dbField.get(t);
                if(value.equals(o)){
		// 如值和預(yù)期想等的話,則加入到返回值中
                    res.add(t);
                }
            }
        } catch (NoSuchFieldException e) {
	// 如果不存在這個字段,則直接返回空
            return res;
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return res;
    }

測試

List<TestModel> c = containsByField(list, "name", "demo", TestModel.class);

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot中修改依賴版本的方法

    SpringBoot中修改依賴版本的方法

    這篇文章主要介紹了SpringBoot中如何修改依賴的版本,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • java 實現(xiàn)當(dāng)前時間加減30分鐘的時間代碼

    java 實現(xiàn)當(dāng)前時間加減30分鐘的時間代碼

    這篇文章主要介紹了java 實現(xiàn)當(dāng)前時間加減30分鐘的時間代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • java中Swing五種常見的布局方式

    java中Swing五種常見的布局方式

    本文通過代碼示例給大家詳細(xì)講解了java中Swing五種常見的布局方式,以及相關(guān)注意知識點,有興趣的朋友參考學(xué)習(xí)下。
    2018-03-03
  • JAVA8獨有的map遍歷方式(非常好用)

    JAVA8獨有的map遍歷方式(非常好用)

    這篇文章主要介紹了JAVA8獨有的map遍歷方式(非常好用),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • idea開啟mybatis控制臺SQL日志打印的代碼示例

    idea開啟mybatis控制臺SQL日志打印的代碼示例

    本文主要介紹了idea開啟mybatis控制臺SQL日志打印的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • Java管道流實現(xiàn)線程間通信過程解析

    Java管道流實現(xiàn)線程間通信過程解析

    這篇文章主要介紹了Java管道流實現(xiàn)線程間通信過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • 關(guān)于RedisTemplate常用方法封裝

    關(guān)于RedisTemplate常用方法封裝

    文章總結(jié)了RedisTemplate的常用方法封裝,包括序列化配置、基礎(chǔ)常量和接口實現(xiàn),這些內(nèi)容是個人經(jīng)驗分享,旨在為讀者提供參考和支持
    2024-12-12
  • Java Spring 聲明式事務(wù)詳解

    Java Spring 聲明式事務(wù)詳解

    這篇文章主要介紹了spring 聲明式事務(wù)實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-09-09
  • SpringBoot JPA 表關(guān)聯(lián)查詢實例

    SpringBoot JPA 表關(guān)聯(lián)查詢實例

    本篇文章主要介紹了SpringBoot JPA 表關(guān)聯(lián)查詢實例,使用JPA原生的findBy語句實現(xiàn),具有一定的參考價值,有興趣的可以了解一下。
    2017-04-04
  • 詳解Java如何向http/https接口發(fā)出請求

    詳解Java如何向http/https接口發(fā)出請求

    這篇文章主要為大家詳細(xì)介紹了Java如何實現(xiàn)向http/https接口發(fā)出請求,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-01-01

最新評論

昆明市| 马龙县| 瑞丽市| 得荣县| 新巴尔虎右旗| 中西区| 综艺| 禄劝| 台东市| 株洲市| 大名县| 西城区| 宿松县| 武川县| 中卫市| 安远县| 秀山| 安图县| 比如县| 赞皇县| 东光县| 密山市| 梁河县| 东阿县| 静海县| 浦县| 淳安县| 民勤县| 湖南省| 太康县| 息烽县| 姜堰市| 新沂市| 南投市| 文成县| 清镇市| 肥乡县| 连江县| 北碚区| 体育| 师宗县|