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

Java如何使用流去除集合中某個字段為空的對象

 更新時間:2023年08月15日 10:01:10   作者:程序員大騰  
這篇文章主要給大家介紹了關(guān)于Java如何使用流去除集合中某個字段為空的對象,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

0 寫在前面

最近寫了一些業(yè)務(wù)邏輯,調(diào)試的時候總會報空指針異常。Java中空指針異常是危險恐怖分子,最好不要碰見他。所以有些時候,處理集合中的數(shù)據(jù)時,特定情況下需要略過一些數(shù)據(jù)。

1 情景復(fù)刻

前端傳輸參數(shù),通過SpringBoot,使用MyBatis查詢數(shù)據(jù)庫數(shù)據(jù)。此處我用偽代碼復(fù)刻一下。(不代表真正得業(yè)務(wù)代碼)

如果傳輸條件或者數(shù)據(jù)庫其他表中的字段有錯誤的話,查詢條件為null的話。則查出來的為空,此時java中就會報空指針異常。

    SELECT
    ……
    FROM
    ……
    WHERE 條件=null

2 解決方案

所以我們的解決辦法:使用Java8的新特性(流)進行篩選。把條件為空的數(shù)據(jù)給過濾掉,從那個集合中刪除。格式:

    集合 集合名稱 =  集合.stream().filter(對象 -> 對象.get某個屬性() != null).collect(Collectors.toList());

這句話的意思為:使用流的方式,將其中對象的某個屬性為空的整條數(shù)據(jù)從集合中刪除,構(gòu)建一個新的集合。

代碼復(fù)刻一下。

對象類

public class Person {
    private Integer id;
    private String name;
    private String sex;
    private String email;
    private Long phoneNumber;
    private String personUuid;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public Long getPhoneNumber() {
        return phoneNumber;
    }
    public void setPhoneNumber(Long phoneNumber) {
        this.phoneNumber = phoneNumber;
    }
    public String getPersonUuid() {
        return personUuid;
    }
    public void setPersonUuid(String personUuid) {
        this.personUuid = personUuid;
    }
    public Person() {
    }
    public Person(Integer id, String name, String sex, String email, Long phoneNumber, String personUuid) {
        this.id = id;
        this.name = name;
        this.sex = sex;
        this.email = email;
        this.phoneNumber = phoneNumber;
        this.personUuid = personUuid;
    }
    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", email='" + email + '\'' +
                ", phoneNumber=" + phoneNumber +
                ", personUuid='" + personUuid + '\'' +
                '}';
    }
}

測試類

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Test {
    public static void main(String[] args) {
        //模擬數(shù)據(jù)--->其中person2中的uuid為null
        Person person1 = new Person(1,"孫悟空","男","zhangsan@163.com",18253847430L,"8BADB4E1-76B0-57F8-1C77-F25A1D06045D");
        Person person2 = new Person(2,"林黛玉","女","lindaiyu@126.com",18765381234L,null);
        Person person3= new Person(3,"魯智深","男","luzhishen@qq.com",18254810416L,"A0576C79-CF82-879B-146B-1C0D172EC1A6");
        Person person4 = new Person(4,"貂蟬","女","diaochan@lvbu.com",12345678999L,"EC1EE903-FB4E-655D-B95B-2C41A0CAFD82");
        Person person5 = new Person(5,"豬八戒","女","zhubajie@lvbu.com",98765432111L,null);
        List<Person> personList = new ArrayList<Person>();
        personList.add(person1);
        personList.add(person2);
        personList.add(person3);
        personList.add(person4);
        personList.add(person5);
        //此時person2中的uuid為null。所以某些特定時段會報錯。
        personList.forEach(person->{
            System.out.println(person);
        });
        //分割線
        System.out.println("--------------------------------------------------------");
        System.out.println("--------------------------------------------------------");
        System.out.println("--------------------------------------------------------");
        //處理數(shù)據(jù)
        List<Person> collect = personList.stream().filter(Person -> Person.getPersonUuid() != null).collect(Collectors.toList());
        collect.forEach(person -> {
            System.out.println(person);
        });
    }
}

輸出結(jié)果:

可以看到,在集合中兩個uuid為null的對象都被過濾出去了。

3 寫在最后

此功能只是在特定情況下適用。如果想要保留為null的數(shù)據(jù),可以吧中見的判斷條件改為對象 -> 對象.get屬性 == null。

到此這篇關(guān)于Java如何使用流去除集合中某個字段為空的對象的文章就介紹到這了,更多相關(guān)Java去除集合字段為空對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • IDEA項目的依賴(pom.xml文件)導(dǎo)入問題及解決

    IDEA項目的依賴(pom.xml文件)導(dǎo)入問題及解決

    這篇文章主要介紹了IDEA項目的依賴(pom.xml文件)導(dǎo)入問題及解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Mybatis velocity腳本的使用教程詳解(推薦)

    Mybatis velocity腳本的使用教程詳解(推薦)

    很多朋友不清楚在mybatis可以使用各種腳本語言來定義Mapper文件里面的動態(tài)SQL;目前mybatis支持的腳本語言有XML(默認的);Velocity和Freemarker三種。下面通過本文給大家介紹Mybatis velocity腳本的使用,一起看看吧
    2016-11-11
  • java常用工具類 Date日期、Mail郵件工具類

    java常用工具類 Date日期、Mail郵件工具類

    這篇文章主要為大家詳細介紹了java常用工具類,包括Date日期、Mail郵件工具類,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Maven+Tomcat8 實現(xiàn)自動化部署的方法

    Maven+Tomcat8 實現(xiàn)自動化部署的方法

    本篇文章主要介紹了Maven+Tomcat8 實現(xiàn)自動化部署的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • 利用spring-data-redis實現(xiàn)incr自增的操作

    利用spring-data-redis實現(xiàn)incr自增的操作

    這篇文章主要介紹了利用spring-data-redis實現(xiàn)incr自增的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Java前后端分離的在線點餐系統(tǒng)實現(xiàn)詳解

    Java前后端分離的在線點餐系統(tǒng)實現(xiàn)詳解

    這是一個基于SpringBoot+Vue框架開發(fā)的在線點餐系統(tǒng)。首先,這是一個前后端分離的項目。具有一個在線點餐系統(tǒng)該有的所有功能,感興趣的朋友快來看看吧
    2022-01-01
  • SpringBoot2.0集成WebSocket實現(xiàn)后臺向前端推送信息

    SpringBoot2.0集成WebSocket實現(xiàn)后臺向前端推送信息

    這篇文章主要介紹了SpringBoot2.0集成WebSocket實現(xiàn)后臺向前端推送信息,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • Spring中屬性文件properties的讀取與使用詳解

    Spring中屬性文件properties的讀取與使用詳解

    這篇文章主要介紹了Spring中屬性文件properties的讀取與使用詳解的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Java?棧與隊列實戰(zhàn)真題訓(xùn)練

    Java?棧與隊列實戰(zhàn)真題訓(xùn)練

    在編寫程序的時候,對于棧與隊列的應(yīng)用需要熟練的掌握,這樣才能夠確保寫出來的代碼有質(zhì)量。本文小編就以幾個題目詳細說說Java中的棧與隊列,需要的朋友可以參考一下
    2022-04-04
  • SpringBoot接收JSON類型的參數(shù)方式

    SpringBoot接收JSON類型的參數(shù)方式

    這篇文章主要介紹了SpringBoot接收JSON類型的參數(shù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03

最新評論