【Java从入门到头秃专栏 7】语法篇(六) :Lambda表达式(->) 方法引用(::) stream流
目錄
1 Lambda表達式( -> )
??2 方法引用( :: )
3 Stream流
????????接下來介紹的三種語法叫:Lambda表達式 方法引用 stream流,這三種語法的使用要有特定條件,在一定條件下借助這三種語法可以使代碼十分簡單且優(yōu)雅,但是不要舍本逐末為了使用而使用,這樣的話可能會起到相反的作用。其實大多情況下這種代碼并不是十分常用,但是如果想要閱讀源碼或者說別人的代碼,就需要知道這三種語法的使用規(guī)范了,這就是學習三種語法的目的:不是為了裝逼,而是為了不讓別人拿這個在我們面前裝逼。
1 Lambda表達式( -> )
? ? Lambda表達式的作用就是為了簡化函數(shù)式接口的匿名內(nèi)部類的一種代碼寫法,函數(shù)式接口就是內(nèi)部只有一個抽象方法的接口,函數(shù)式接口會使用@FunctionalInterface注解標明,Lambda表達式的格式如下:
(匿名內(nèi)部類被重寫方法的形參列表)? ->{
? ? 被重寫方法的方法體;
}
Lambda表達式的簡化寫法:
- 如果重寫方法的方法體只有一行代碼,同時省略大括號和分號不寫,如果這行代碼是個return語句的話還要省略return不寫
- ?形參列表的參數(shù)類型也可省略不寫
- 如果只有一個參數(shù)的話可以同時省略參數(shù)類型和小括號
實現(xiàn)Runnable接口創(chuàng)建線程的Lambda寫法
collections排序的Lambda寫法?
?2 方法引用( :: )
????方法引用是為了進一步的簡化Lambda表達式的寫法,主要有以下四種引用形式:靜態(tài)方法的引用、實例方法的引用、特定類型方法的引用、構(gòu)造器的引用
靜態(tài)方法的引用
?? 被引用靜態(tài)方法的參數(shù)列表要和函數(shù)式接口中抽象方法的參數(shù)列表保持一致
類名::靜態(tài)方法名?
? ?
實例方法的引用
?? 被引用實例方法的參數(shù)列表要和函數(shù)式接口中抽象方法的參數(shù)列表保持一致
對象名::實例方法名?
最經(jīng)典的實例方法就是輸出語句
??
特定類型方法的引用
?? 被引用方法的參數(shù)列表中的第一個參數(shù)作為后面返回語句中方法的調(diào)用者
調(diào)用者的類型::方法
構(gòu)造器的引用
??? 返回值是使用一個構(gòu)造器創(chuàng)建對象
構(gòu)造器::new
3 Stream流
Stream流是用來簡化集合或者數(shù)組中一些API的代碼寫法。要想使用Stream流,需要先獲取到stream流對象才能使用Stream流的API。最終處理好的stream流對象還是應該轉(zhuǎn)換為集合。
Stream流獲取
collection集合:集合名.stream()
Map集合:集合名.keySet().stream()
????????集合名.values().stream()
??????集合名.entrySet().stream()
數(shù)組:Arrays.stream(集合名)
常用API:
??? forEach方法沒有返回值、count方法返回值是long型,只有返回值是stream對象的才能一直使用鏈式編程一直調(diào)用下去,只要出現(xiàn)方法的返回值不是stream流對象的話,就不能采用鏈式編程。
stream流對象轉(zhuǎn)集合、數(shù)組
??? 一個流對象只能被轉(zhuǎn)一次,想要再轉(zhuǎn)就要再次創(chuàng)建流
上一篇:
下一篇:
總結(jié)
以上是生活随笔為你收集整理的【Java从入门到头秃专栏 7】语法篇(六) :Lambda表达式(->) 方法引用(::) stream流的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: window.open不重复打开同一个名
- 下一篇: 常用的loss函数,以及在训练中的使用