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