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 方法的預設實現 介面...