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

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

 更新時間:2023年08月15日 10:01:10   作者:程序員大騰  
這篇文章主要給大家介紹了關(guān)于Java如何使用流去除集合中某個字段為空的對象,文中通過示例代碼介紹的非常詳細(xì),對大家學(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的新特性(流)進(jìn)行篩選。把條件為空的數(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)文章

  • SpringBoot實(shí)現(xiàn)上傳文件到AWS S3的代碼

    SpringBoot實(shí)現(xiàn)上傳文件到AWS S3的代碼

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)上傳文件到AWS S3的代碼,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2020-10-10
  • Java泛型機(jī)制必要性及原理解析

    Java泛型機(jī)制必要性及原理解析

    這篇文章主要介紹了Java泛型機(jī)制必要性及原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • java多線程CountDownLatch與線程池ThreadPoolExecutor/ExecutorService案例

    java多線程CountDownLatch與線程池ThreadPoolExecutor/ExecutorService案

    這篇文章主要介紹了java多線程CountDownLatch與線程池ThreadPoolExecutor/ExecutorService案例,
    2021-02-02
  • Java實(shí)現(xiàn)解析JSON大文件JsonReader工具詳解

    Java實(shí)現(xiàn)解析JSON大文件JsonReader工具詳解

    這篇文章主要介紹了Java實(shí)現(xiàn)解析JSON大文件的工具JsonReader使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • MyBatis分頁插件PageHelper的具體使用

    MyBatis分頁插件PageHelper的具體使用

    這篇文章主要介紹了MyBatis分頁插件PageHelper的具體使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • java 實(shí)現(xiàn)線程同步的方式有哪些

    java 實(shí)現(xiàn)線程同步的方式有哪些

    當(dāng)使用多個線程來訪問同一個數(shù)據(jù)時,非常容易出現(xiàn)線程安全問題,所以我們用同步機(jī)制來解決這些問題,本文將詳細(xì)介紹,需要的朋友可以參考下
    2012-11-11
  • Java字符串的intern方法有何奧妙之處

    Java字符串的intern方法有何奧妙之處

    intern() 方法返回字符串對象的規(guī)范化表示形式。它遵循以下規(guī)則:對于任意兩個字符串 s 和 t,當(dāng)且僅當(dāng) s.equals(t) 為 true 時,s.intern() == t.intern() 才為 true
    2021-10-10
  • 你知道Java中的注解可以繼承嗎?

    你知道Java中的注解可以繼承嗎?

    注解想必大家都用過,也叫元數(shù)據(jù),是一種代碼級別的注釋,可以對類或者方法等元素做標(biāo)記說明。那么今天我想問大家的是類被繼承了,注解能否繼承呢?可能會和大家想的不一樣,感興趣的可以往下看
    2022-12-12
  • Java 實(shí)現(xiàn)麥克風(fēng)自動錄音

    Java 實(shí)現(xiàn)麥克風(fēng)自動錄音

    這篇文章主要介紹了Java 實(shí)現(xiàn)麥克風(fēng)自動錄音的示例代碼,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • MyBatis-Ext快速入門實(shí)戰(zhàn)

    MyBatis-Ext快速入門實(shí)戰(zhàn)

    MyBatis-Ext是MyBatis的增強(qiáng)擴(kuò)展,和我們平常用的Mybatis-plus非常類似,本文主要介紹了MyBatis-Ext快速入門實(shí)戰(zhàn),感興趣的可以了解一下
    2021-10-10

最新評論

漳浦县| 福安市| 襄樊市| 惠安县| 睢宁县| 娱乐| 江达县| 偏关县| 龙南县| 壤塘县| 壤塘县| 洪洞县| 封开县| 封开县| 山阳县| 邳州市| 鹿泉市| 富川| 拉萨市| 城市| 陇西县| 安义县| 黔江区| 永登县| 纳雍县| 凤山市| 沾化县| 织金县| 峨边| 大安市| 五原县| 柘荣县| 长丰县| 河曲县| 乐山市| 城步| 武邑县| 承德县| 育儿| 华阴市| 冕宁县|