1. 程式人生 > >jdk8之深入理解 stream --lamdba

jdk8之深入理解 stream --lamdba

隨著學習的深入,jdk8的改變和強大遠超出我的理解。

由lamdba表示式引起的再一次思考,先貼出來這一塊的程式碼

 List<CartDTO> cartDTOList = orderDTO.getOrderDetailList().stream().map((e) ->
                new CartDTO(e.getProductId(),e.getProductQuantity())
        ).collect(Collectors.toList());

作用顧名思義,遍歷orderDTO的list屬性,新增cartDTO物件,同時將這個list返回給List<CartDTO> cartDTOList。

正常的邏輯是要遍歷orderDTO.getOrderDetailList(),然後cartDTOLIST一個一個的add,這樣也可以,但是麻煩,效率沒有這種高。

java8支援將collection流化,也就是.stream()方法。在java8中加入了stream類,在這個類中新定義了很多方法,

並且大量使用了default,static等方法。這些不算是抽象方法。所以類上加上@FunctionalInterface註解後依然可以使用

lambda表示式。

邏輯: stream(),序列化流--> 中間操作map(將new的物件賦值給e,e為序列化流的那個collection中的每個元素),

最後一步為將流轉化為list。

有很多api,寫出來要太長時間。下面按順序貼一下我感覺比較有用的關於這部分的帖子。 

https://blog.csdn.net/u014646662/article/details/52261511

http://www.importnew.com/16436.html

https://www.cnblogs.com/qdwyg2013/p/5631057.html

附:唱腔另類這首歌真好聽啊~嘿嘿


相關推薦

jdk8深入理解 stream --lamdba

隨著學習的深入,jdk8的改變和強大遠超出我的理解。由lamdba表示式引起的再一次思考,先貼出來這一塊的程式碼 List<CartDTO> cartDTOList = orderDTO.getOrderDetailList().stream().map((e)

謝煙客---------Linux深入理解anaconda使用

linux獲取詳細的幫助: 官方文檔: 《Installation Guide》anaconda位置anaconda命令行anaconda配置方式kickstart文件格式kickstart創建基於光盤安裝linuxanaconda位置 光盤、ftp、nfs、httpd、nfs**基於光盤,安裝l

Android開發深入理解泛型extends和super的區別

我想 lis dataset 文檔 cnblogs extend 擦除 選擇 提前 摘要: 什麽是泛型?什麽是擦除邊界?什麽是上界限定或下界限定(子類型限定或超類型限定)?什麽是類型安全?泛型extends關和super關鍵字結合通配符?使用的區別,兩種泛型在實際Andro

css深入理解overflow

com bsp mage overflow log clas 自己 blog info 主要是對大神講解的視頻的總結,我自己是寫不出來什麽東東的 css之深入理解overflow

生產者/消費者模式深入理解

模板 必須 winapi 協議 針對 sso 額外 fill 功能實現 #include <windows.h> #include <iostream> const unsigned short SIZE_OF_BUFFER = 2; //緩沖區長

Java多線程深入理解synchronize關鍵字

tracking 而不是 方法 獲得 content cal art track () synchronize鎖重入: 關鍵字synchronize擁有鎖重入的功能,也就是在使用synchronize時,當一個線程的得到了一個對象的鎖後,再次請求此對象是可以再次得到

讀書筆記深入理解Java虛擬機器

深入理解Java虛擬機器 2.2 執行時資料區域 2.2.1.程式計數器 可以看做是當前執行緒所執行的位元組碼的 行號指示器。 每個執行緒都需要一個 獨立的程式計數器。(這類記憶體區域為"執行緒私有"的記憶體

【死磕 Spring】----- IOC 深入理解 Spring IoC

在一開始學習 Spring 的時候,我們就接觸 IoC 了,作為 Spring 第一個最核心的概念,我們在解讀它原始碼之前一定需要對其有深入的認識,本篇為【死磕 Spring】系列部落格的第一篇博文,主要介紹 IoC 基本概念和各個元件。 IOC 理論 Io

springboot使用@ControllerAdvice(二)深入理解

前言: 介面類專案開發時,為了便於後期查詢問題,一般會攔截器或過濾器中記錄每個介面請求的引數與響應值記錄, 請求引數很容易從request中獲取,但controller的返回值無法從response中獲取,有一個簡單的方法,在controller介面的最後將返回值儲存到request域中,這種方

Java 乾貨深入理解String

可以證明,字串操作是計算機程式設計中最常見的行為,尤其是在Java大展拳腳的Web系統中更是如此。 ---《Thinking in Java》 提到Java中的String,總是有說不完的知識點,它對於剛接觸Java的人來說,有太多太多的值得研究的東西了,可是為什麼Java中的String這麼獨特呢?今天我

Java 乾貨深入理解Java內部類

可以將一個類定義在另一個類或方法中,這樣的類叫做內部類 --《Thinking in Java》 說起內部類,大家並不陌生,並且會經常在例項化容器的時候使用到它。但是內部類的具體細節語法,原理以及實現是什麼樣的可以不少人都還挺陌生,這裡作一篇總結,希望通過這篇總結提高對內部類的認識。 內部類是什麼? 由文章

Java 乾貨深入理解Java泛型

一般的類和方法,只能使用具體的型別,要麼是基本型別,要麼是自定義的類。如果要編寫可以應用多中型別的程式碼,這種刻板的限制對程式碼得束縛會就會很大。 ---《Thinking in Java》 泛型大家都接觸的不少,但是由於Java 歷史的原因,Java 中的泛型一直被稱為偽泛型,因此對Java中的泛型,有

Java基礎深入理解Class物件與反射機制

深入理解Class物件 RRIT及Class物件的概念 RRIT(Run-Time Type Identification)執行時型別識別。在《Thinking in Java》一書第十四章中有提到,它的功能是在執行時識別物件的型別和類資訊。有兩種主要方式:“傳統的”RTTI(它假定我們在編譯時

介面測試深入理解HTTPS

前言 隨著網路安全問題越來越被重視,HTTPS協議的使用已經逐漸主流化。目前的主流站點均已使用了HTTPS協議;比如:百度、淘寶、京東等一二線主站都已經遷移到HTTPS服務之上。而作為測試人員來講,也要需時俱進對HTTPS協議要有一定的瞭解,這樣就可以更好的幫助我們在工作完成任務和排查問題。 HTTP與T

HashMap深入理解

        容量(capacity):雜湊表中容器的數量,初始容量只是雜湊表在建立時的容量。         負載因子(load factor):雜湊表在其容量自動增加之前可以達到多滿的一種尺度。當雜湊表中的條目數超出了負載因子與當前容量的乘積時,則要對該雜湊表進行 rehash 操作(即重建內部資

[三]java8 函數語言程式設計Stream 概念深入理解 Stream 執行原理 Stream設計思路

這些流的方法是如何實現的?類StreamSupport提供了許多用於建立流的低階方法,所有這些方法都使用某種形式的Spliterator.一個Spliterator.是迭代器Iterator的並行版本它描述了一個(可能是無限的)元素集合,支援順序前進、批量遍歷,並將一部分輸入分割成另一個可並行處理的Split

JavaScript深入理解【函式】

一 參考文獻   《JavaScript忍者祕籍》   二 函式特徵總結   1. 函式是【第一型物件(first-class object)】:可以像這門語言的其它物件一樣使用     函式可以共處, 可以將其視為其它任意型別的JavaScript

JavaScript深入理解【函數】

計時器 卸載 擁有 普通 參數 深入理解 成對 類型 t對象 一 參考文獻   《JavaScript忍者秘籍》 二 函數特征總結   1. 函數是【第一型對象(first-class object)】:可以像這門語言的其它對象一樣使用     函數可以共處,可以將其視

CSS深入理解 flex 佈局以及計算

起因:對於Flex佈局,閱讀了大漠老師和其他老師寫的文章後,我還是不太理解Flexbox是如何彈性的計運算元級專案的大小以及一些其他細節。在大漠老師的幫助下,我去查閱Flexbox 的 W3C 規範文件 1. 對於flex盒模型的設計期望: - 在任

軟體開發底層知識修煉】二十三 ABI-應用程式二進位制介面三深入理解函式棧幀的形成與摧毀

上兩篇文章我們初步接觸了ABI-應用程式二進位制介面的概念,點選連結檢視上一篇文章:【軟體開發底層知識修煉】二十二 ABI-應用程式二進位制介面 二。瞭解了為什麼會有ABI的存在。本篇文章繼續學習ABI 的內容。學習在ABI規範下,函式棧幀的結構與函式呼叫時函式棧幀的詳