初探java8函式式程式設計

2021-09-02 15:01:09 字數 1866 閱讀 8496

lambda引用的是值,不是變數,所以,lambda中引用變數,必須是final變數或者既成事實上的final變數

collect(tolist())

方法由stream

裡的值生成乙個列表,

是乙個及早求值操作

listcollected = stream.of("a", "b", "c").collect(collectors.tolist());
將流中一種型別的值轉變為另一種型別的值得流用map

//for  

listlist =new arraylist<>() ;

for (string string:aslist("a", "ab", "hello"))

//lambda

listcollected = stream.of("a", "ab", "hello").map(string -> string.touppercase()) .collect(tolist())

遍歷資料並檢查其中的元素時用filter

//for

listlist =new arraylist<>() ;

for (string string:aslist("a", "ab", "hello"))

}//lambda

lista = stream.of("a", "ab", "hello").filter(string -> string.startswith("a")).collect(tolist());

flatmap 方法可用 stream 替換值, 然後將多個 stream 連線成乙個 stream

listcollect1 = stream.of(aslist(1, 2, 3), aslist(4, 5, 6))

.flatmap(numbers -> numbers.stream()).collect(collectors.tolist());

stream 上常用的操作之一是求最大值和最小值

integer min = stream.of(1, 2, 3)

.min(comparator.comparing(integer::intvalue)).get();

integer max = stream.of(1, 2, 3)

.max(comparator.comparing(s -> s)).get();

reduce 操作可以實現從一組值中生成乙個值。 在上述例子中用到的 count、 min 和 max 方法, 因為常用而被納入標準庫中。 事實上, 這些方法都是 reduce 操作。reduce 操作可以實現從一組值中生成乙個值。 在上述例子中用到的 count、 min 和 max 方法, 因為常用而被納入標準庫中。 事實上, 這些方法都是 reduce 操作。

int acc=0;

for (int ele:aslist(1,2,3))

//等價於

integer reduce = stream.of(1, 2, 3).reduce(0, (acc, ele) -> acc + ele);

組合練習

flatmap也用於將乙個list轉為另乙個list,如重構以下**

public setfindlongtracks (list < album > albums) }}

return tracknames;

}

重構後的**

public setfindlongtracks (list < album > albums)

java8函式式程式設計(二)

list常用操作 private static list init 迴圈列印集合中每個元素 private static void foreach private static void tolist 計算集合中age 4的元素個數 private static void filter 篩選出顏色為...

java 8 函式式程式設計實戰

函式一二三等值的區分 只要某個值滿足以下三個條件,就能被稱為一等值。可以作為引數傳遞給函式 可以作為函式返回值 可以被賦值給變數 所以數字 字串等常用的值都是一等的。如果僅滿足第一條,而不能作為函式返回值或被賦值給變數,就稱為二等的 second class 假如三條都不滿足,則稱為三等的 thir...

java 8 函式式介面

functionalinte ce public inte ce personsearch functionalinte ce public inte ce personsearch1 functionalinte ce public inte ce personsearch2 方法的預設實現 介面...