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

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

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

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

1、創(chuàng)建個(gè)Student對(duì)象

public class Student { 
    private String name;//姓名
    private Integer age;//年齡
    private int sex;//性別
    private String professional;//專(zhuān)業(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、編寫(xiě)測(cè)試類(lèi)

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ì)算機(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ì)算機(jī)");
        allList.add(st4);
 
        System.out.println("**************************目的:只取專(zhuān)業(yè)為計(jì)算機(jī)行業(yè)的集合*************************");
//        allList = allList.stream().filter(Student -> Student.getProfessional().equals("計(jì)算機(jī)")).collect(Collectors.toList());
//        allList.forEach(Student -> {
//            System.out.println(Student.getName());
//        });
        System.out.println("**************************目的:取專(zhuān)業(yè)為計(jì)算機(jī)和人文專(zhuān)業(yè)的集合*************************");
        List<String> str=new ArrayList<>();
        str.add("計(jì)算機(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 ! 是不是比f(wàn)or循環(huán)遍歷取集合好用的多呢~ give a like?

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

工具類(lèi)如下所示,主要使用了泛型,反射

入?yún)ⅲ?/strong>

list,待查找的 list

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

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

clazz: 泛型類(lèi)的描述信息,也就是 TestModel

代碼

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

測(cè)試

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

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

相關(guān)文章

  • 學(xué)會(huì)在Java中使用Optional功能

    學(xué)會(huì)在Java中使用Optional功能

    這篇文章主要介紹了學(xué)會(huì)在Java中使用Optional功能,在本文中,我們將了解如何、何時(shí)以及在哪里最好地應(yīng)用Optional,具體相關(guān)內(nèi)容需要的朋友可以參考下面文章內(nèi)容
    2022-09-09
  • java通過(guò)MySQL驅(qū)動(dòng)攔截器實(shí)現(xiàn)執(zhí)行sql耗時(shí)計(jì)算

    java通過(guò)MySQL驅(qū)動(dòng)攔截器實(shí)現(xiàn)執(zhí)行sql耗時(shí)計(jì)算

    本文主要介紹了java通過(guò)MySQL驅(qū)動(dòng)攔截器實(shí)現(xiàn)執(zhí)行sql耗時(shí)計(jì)算,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Java 圖解Spring啟動(dòng)時(shí)的后置處理器工作流程是怎樣的

    Java 圖解Spring啟動(dòng)時(shí)的后置處理器工作流程是怎樣的

    spring的后置處理器有兩類(lèi),bean后置處理器,bf(BeanFactory)后置處理器。bean后置處理器作用于bean的生命周期,bf的后置處理器作用于bean工廠(chǎng)的生命周期
    2021-10-10
  • SpringMVC實(shí)現(xiàn)表單驗(yàn)證功能詳解

    SpringMVC實(shí)現(xiàn)表單驗(yàn)證功能詳解

    這篇文章主要為大家詳細(xì)介紹了SpringMVC 表單驗(yàn)證的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • java操作solr實(shí)現(xiàn)查詢(xún)功能的實(shí)例

    java操作solr實(shí)現(xiàn)查詢(xún)功能的實(shí)例

    下面小編就為大家分享一篇java操作solr實(shí)現(xiàn)查詢(xún)功能的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • 淺談SpringSecurity注解與AOP切面執(zhí)行順序

    淺談SpringSecurity注解與AOP切面執(zhí)行順序

    這篇文章主要介紹了淺談SpringSecurity注解與AOP切面執(zhí)行順序,引入Spring Security后,在Controller的方法中會(huì)出現(xiàn)Spring Security的方法注解與AOP同時(shí)存在的問(wèn)題,這是就會(huì)設(shè)計(jì)順序問(wèn)題,需要的朋友可以參考下
    2023-10-10
  • SpringCloud中的灰度路由使用詳解

    SpringCloud中的灰度路由使用詳解

    這篇文章主要介紹了SpringCloud中的灰度路由使用詳解,在微服務(wù)中,?通常為了高可用,?同一個(gè)服務(wù)往往采用集群方式部署,?即同時(shí)存在幾個(gè)相同的服務(wù),而灰度的核心就?是路由,?通過(guò)我們特定的策略去調(diào)用目標(biāo)服務(wù)線(xiàn)路,需要的朋友可以參考下
    2023-08-08
  • 詳解NIO中FileChannel文件流的簡(jiǎn)單使用

    詳解NIO中FileChannel文件流的簡(jiǎn)單使用

    NIO中Channel分為了很多種,包括FileChannel,DatagramChannel,SocketChannel和ServerSocketChannel,其中FileChannel主要用于對(duì)文件的讀寫(xiě),本文主要和大家探討了FileChannel文件流的簡(jiǎn)單使用,希望對(duì)大家有所幫助
    2023-05-05
  • VSCode中開(kāi)發(fā)JavaWeb項(xiàng)目的詳細(xì)過(guò)程(Maven+Tomcat+熱部署)

    VSCode中開(kāi)發(fā)JavaWeb項(xiàng)目的詳細(xì)過(guò)程(Maven+Tomcat+熱部署)

    這篇文章主要介紹了VSCode中開(kāi)發(fā)JavaWeb項(xiàng)目(Maven+Tomcat+熱部署),本文分步驟通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Java sdk安裝及配置案例詳解

    Java sdk安裝及配置案例詳解

    這篇文章主要介紹了Java sdk安裝及配置案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評(píng)論