主要內容
jdk1.8+出現,關注做什麼,而不是怎麼做of方法的引數是乙個可變引數,所以支援陣列collection集合都可以通過stream預設方法獲取流
list
list =
newarraylist
<
>()
;stream
stream1 = list.
stream()
;stream介面靜態方法of可以獲取陣列對應的流
string[
] array =
;stream
stream = stream.
of(array)
;
注意:過濾:fiter
stream
filter
(predicate<
?super t> predicate)
對映(轉換):map
stream
map(function<
?super t,
?extendsr;
取用前幾個:limit
stream
limit
(long maxsize)
;跳過前幾個:skip
stream
skip
(long n)
;組合:concat
static
stream
concat
(stream<
?extends
t> a,stream<
?extends
t> b)
遍歷:foreach
void
foreach
(consumer<
?super t> action)
統計個數:count
long
count()
;
將元素儲存到陣列
string[
] str = stream.of(
).toarray
(string:
:new
)將元素儲存到集合
list
list = stream.of(
).collect
(collectors.
tolist()
);
lambda中傳遞的引數一定是方法引用中的那個方法可以接收的型別,否則會丟擲異常
方法引用能簡化以下場景: (方法名後不要寫小括號)
通過物件名引用成員方法物件名::成員方法名
system.out::println
通過類名引用靜態方法
類名::靜態方法名
i -> math.abs(i)
math::abs
通過super引用父類成員方法
super::父類方法名
()->super.eat();
super::eat
通過this引用本類成員方法
this::本類方法名
()->this.eat();
this::eat
引用某個類的構造方法
類名::new
name->new person(name)
person::new
引用建立陣列的方法
資料型別::new
length->new int[length];
int::new
13 Stream流 方法引用
stream流 不同於io流,io流主要用於處理輸出,stream流主要用於處理集合,簡化集合操作 stream流是lambda表示式的衍生物 始於jdk1.8 arraylistlist new arraylist list.add 張無忌 list.add 張三丰 list.add 張累 lis...
Stream流 方法引用
流式思想 類似於 生產流水線 模型就是每乙個位置 延遲方法 返回型別是stream介面自身型別的方法,可以鏈式程式設計 包括filter,map,skip等 終結方法 返回型別不再是stream介面自身型別的方法,包括count,foreach stream流常用方法 void foreach co...
學習筆記day 4 Stream流練習
public class main streamstm stream.of a string array streamstream stream.of array 將集合轉換成stream流 listlist new arraylist list.add 張三三 list.add 張四四 list....