jdk8stream map取對象中某項的問題

来源:https://www.cnblogs.com/sunyk/archive/2019/01/14/10269041.html
-Advertisement-
Play Games

jdk8 Stream map 取對象中某項的值 map 取對象中某項的值 問題 ... List<ScreenWiperResponse> screenWiperList= screenWiperResponseList.stream().map(CarAdapterForScreenWiperR ...


jdk8 Stream map 取對象中某項的值

map 取對象中某項的值 問題

    ...
   
    List<ScreenWiperResponse> screenWiperList=  screenWiperResponseList.stream().map(CarAdapterForScreenWiperResponse::getPartData).collect(Collectors.toList());
        List<String> productModelList = new LinkedList<>();
        log.info("screenWiperList: {}", screenWiperList);
        screenWiperList.forEach(screenWiperResponse -> {
            if (CollectionUtil.isNotNullOrEmpty(screenWiperResponse.getPartNos())){
                productModelList.addAll(screenWiperResponse.getPartNos());
            }
        });
    
    ...

分析:拿到值就做處理,出現空指針,出現的Bug是,根據某項值進行取值後,會出現null對象

 


 

size等於2是,原數據,通過取某項值後,返回對應位置的數據,第一個對象不符合,為null,第二個對象符合取值條件,就顯示有數據。

 


 

經過上面分析,問題已經找到,需要把null過濾,代碼調整

    ...
        
       List<ScreenWiperResponse> screenWiperList=  screenWiperResponseList.stream().map(CarAdapterForScreenWiperResponse::getPartData).filter(x -> x != null).collect(Collectors.toList());
        List<String> productModelList = new LinkedList<>();
        log.info("screenWiperList: {}", screenWiperList);
        screenWiperList.forEach(screenWiperResponse -> {
            if (CollectionUtil.isNotNullOrEmpty(screenWiperResponse.getPartNos())){
                productModelList.addAll(screenWiperResponse.getPartNos());
            }
        });
    ...

慣性:一般用jdk8 stream的map根據某一項取值,取完之後,基本就結束了,如果你繼續把這個集合進行迴圈處理,就會發現bug ,手動過濾下,此處也算是一坑

    ...
         screenWiperResponseList.stream().map(CarAdapterForScreenWiperResponse::getPartData).filter(x -> x != null).collect(Collectors.toList());
    ...
    

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 項目說明: Python新手,第一個爬蟲項目,網路爬蟲算是一項能提升編程學習興趣的活動了,讓Python學習不再枯燥。 Python版本3.7.2 需要模塊:requests,os,beautifulsoup 爬蟲目標地址https://www.mzitu.com/xinggan/ 項目實現: 首先 ...
  • 使用CBrother腳本做TCP伺服器與C++客戶端通信   工作中總是會遇到一些對於伺服器壓力不是特別大,但是代碼量比較多,用C++寫起來很不方便。對於這種需求,我選擇用CBrother腳本做伺服器,之所以不選擇Python是因為python的語法我實在是適應不了,再來CBrother的網路框架也... ...
  • # 使用selenium和phantomJS瀏覽器獲取網頁內容的小演示 # 導入包 from selenium import webdriver # 使用selenium庫里的webdriver方法調用PhantomJS瀏覽器實例一個瀏覽器的操作對象 # 括弧里的參數為PhantomJS瀏覽器在電腦... ...
  • 新聞 "Rider上的拼寫助手,對未使用引用的代碼分析及更多F 相關特性的更新" ".NET開源革命開始" "ML.NET 0.9發佈記錄" "測試驅動的集成開發環境" "Giraffe在GitHub上超過了1000個星" "用於Giraffe,Saturn和ASP.NET Core中間件適配器的函 ...
  • 最近再看I/O這一塊,故作為總結記錄於此。JDK1.4引入NIO後,原來的I/O方法都基於NIO進行了優化,提高了性能。I/O操作類都在java.io下,大概將近80個,大致可以分為4類: 基於位元組操作的I/O介面:以InputStream和OutputStream為基類,也是I/O操作的基礎。 基 ...
  • 將能夠處理同一類請求的對象形成一條鏈,所提交的請求沿著鏈傳遞,鏈上的對象逐個判斷是否有能力處理該請求 如果能則處理,否則傳遞給下一個對象。 例如:公司行政審批流程,鬥地主游戲,田徑項目中接力運動等。都是責任鏈模式 的運用。 責任鏈可能是一條直線,一個環鏈或者是一個樹結構的一部分。 責任鏈涉及角色: ...
  • 一、下載maven Apache Maven下載地址:http://maven.apache.org/download.cgi 二、maven的安裝 將下載好的安裝文件解壓到d盤根目錄下即可(當然,這裡放別的目錄也行,但是最好不要出現中文.): 三、配置maven的環境變數 第一步:新建一個MAVE ...
  • 1.Window-Preferences-Server-Runtime Environments 2.點擊Add,選擇相應的Tomcat版本,我的是7.0的所以我選擇這個。並勾選Create a new local server,點擊next 3.點擊Browse,選擇Tomcat的本地安裝路徑,並 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...