1 Lambda運算式
1.1 作用
- 為了簡化匿名內部類的書寫
1.2 思想
- 函式式編程思想 : 強調的是結果 , 而不強調程序
1.3 使用的前提
- Lambda運算式只能作用在函式式介面
函式式介面 : 只有一個抽象方法需要重寫的介面 , @FunctionalInterface注解用來校驗一個介面是否屬于函式式介面
1.4 格式
一般格式 : () -> { }
- ( ) : 代表的介面中唯一抽象方法的形參,有就寫,沒有就空著
- -> : 用箭頭指向后面后面要做的事情
- { } : 代碼塊,代表方法體的內容,要做的事情
1.5 簡化規則
-
引數型別可以省略,但有多個引數的情況下,不能只省略一個,要省略都的省略
-
如果引數有且僅有一個,那么小括號可以省略
-
如果代碼塊的陳述句只有一條,可以省略大括號和分號,甚至是return,要省略全部都要省略不能省略某一個
舉例 :
簡化前 : (int a, int b) -> { return a+ b ;}
簡化后 : (a , b) -> a+b
注意 : 三個條件滿足哪個就可以簡化哪個
2 Stream流
2.1 作用
- 對陣列和集合中元素的篩選和過濾進行簡化操作
2.2 獲取Stream流
-
單列集合
- Collection介面中的默認方法Stream(),回傳一個Stream流 (本質回傳的Stream介面的實作類物件,底層實作)
-
雙列集合
- 先通過雙列集合的方法 keySet() 或 entrySet() 得到單列的鍵值Set集合或鍵值對Set集合,然后原理就同單列集合使用Stream流方式類同
-
陣列
- Arrays 中的靜態方法Stream(),回傳一個Stream流
-
同型別多個資料
-Stream.of(T ... t )
2.3 中間方法 (方法的回傳值都是Stream流物件,可以鏈式編程)
-
Stream
filter(Predicate predicate )
作用 : 對流中的資料進行過濾,- Predicate 是一個函式式介面,可以用Lambda運算式, 其介面中的方法 : boolean test(T t) 對給定的引數進行判斷,回傳一個布林值,true表示此元素留下了,false與之相反
-
Stream
limit(long maxSize)
作用: 截取指定引數個數的資料- 截取Stream流中前 maxSize 個元素
-
Stream
skip(long n)
作用 : 跳過指定引數個數的資料 -
static
Stream concat(Stream a, Stream b)
作用 : 合并a和b兩個流合成一個流 -
Stream map (Function<T , R> mapper)
作用 : 將流中的元素型別進行轉換- Function<T , R> 是函式式介面
- 泛型T : 表示的流中的元素型別
- 泛型R : 表示的是把流中的元素轉成的目標型別
-
Stream
distinct()
作用 : 去除流中重復的元素,依賴(hashCode和equals方法) -
Stream
sorted()
作用 : 將流中的元素按照自然排序的規則排序 -
Stream
sorted(Comparator<? super T> comparator) 作用 : 將流中的元素按照自定義比較器的規則排序
2.4 終結方法
-
void forEach( Consumer action)
作用: 對此流的每個元素執行操作,一般用于遍歷集合- Consumer 是函式式介面, 介面中唯一需要重寫的抽象方法 void accept(T t)
- forEach方法會回圈遍歷拿到流中的每一個資料,在把每個資料傳遞給Lambda運算式的形參
- Lambda運算式 : (String s) -> { sout(s) }
-
long count()
作用 : 回傳此流中的元素的個數
2.5 Stream流的收集操作
- 由于Stream流中無法直接修改集合,陣列等資料源中的資料,所以需要對Stream流進行收集操作
- R collect(Collector collector) : 此方法只負責收集流中的資料,創建集合添加資料動作需要依賴于引數
- 工具類Collectors提供了具體的收集方式
- public static
Collector toList():把元素收集到List集合中 - public static
Collector toSet():把元素收集到Set集合中 - public static Collector toMap(Function keyMapper,Function valueMapper):把元素收集到Map集合中
- public static
3 Optional類
3.1 作用
- 是一個可以為null的容器物件, 只存在則isPresent()方法會回傳true,主要用于進行非空判斷,主要是一種對空值判斷的規范
3.2 API
-
public static
Optional ofNullable(T value)
作用 : 通過指定值構建一個Optional容器,如果值為null則回傳Optional.empty 回傳值為Optional物件,可以鏈式編程 -
public boolean isPresent()
作用 : 如果Optional中存盤的物件為null回傳的是false,如果物件不為null回傳的是true
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/482144.html
標籤:Java
上一篇:《回爐重造》——集合(容器)
