day13 Stream流 方法引用

2021-09-05 12:45:35 字數 2055 閱讀 4136

主要內容

jdk1.8+出現,關注做什麼,而不是怎麼做

collection集合都可以通過stream預設方法獲取流

list

list =

newarraylist

<

>()

;stream

stream1 = list.

stream()

;stream介面靜態方法of可以獲取陣列對應的流

string[

] array =

;stream

stream = stream.

of(array)

;

of方法的引數是乙個可變引數,所以支援陣列

過濾: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....