java8函式式程式設計(二)

2021-08-28 19:51:31 字數 3179 閱讀 1768

list常用操作

private

static list

init()

迴圈列印集合中每個元素

private

static

void

foreach()

private

static

void

tolist()

計算集合中age>4的元素個數

private

static

void

filter()

篩選出顏色為blue的元素

private

static

void

filter()

將集合中元素name重新組合為乙個集合

private

static

void

map(

)

集合中size最大的元素

private

static

void

max(

)

對集合中元素的age求和

private

static

void

reduce()

使用flatmap將多個stream合併為乙個stream

private

static

void

flatmap()

}}system.out.

println

(set)

;

setset1 = cools.

stream()

.flatmap

(cool -

> cool.

getlist()

.stream()

).filter

(frog -

> frog.

getage()

>4)

.map

(frog:

:getname)

.collect

(collectors.

toset()

);system.out.

println

(set1)

;}

ispresent 該方法表示乙個optional 物件裡是否有值

orelse 當optional 物件為空時,該方法提供乙個備選值

orelseget 方法適用當備選值在計算上繁瑣時使用

empty和ofnullable為工廠方法,可將乙個空值轉換成optional 物件

private

static

void

optional()

如果為空建立乙個新物件;如果為空列印「is null」

備註:盡量避免使用下面1的書寫方式,可以考慮2

1:	frog frog =	init().stream()

.filter(frog -> frog.getage() > 6)

.findfirst()

.orelse(null);

if (frog != null)

2: init().stream()

.filter(frog -> frog.getage() > 6)

.findfirst()

.ispresent( e -> );

private

static

void

collect()

"));

system.out.

println

(str)

;// 每種顏色的數量

mapmap1 =

init()

.stream()

.collect

(collectors.

groupingby

(frog:

:getcolor, collectors.

counting()

)); system.out.

println

(map1)

;// 每種顏色中的名稱

map> map2 =

init()

.stream()

.collect

(collectors.

groupingby

( frog:

:getcolor,

collectors.

(frog:

:getname, collectors.

tolist()

)));

system.out.

println

(map2)

;// 每種顏色中的size最大元素

map> map3 =

init()

.stream()

.collect

(collectors.

groupingby

( frog:

:getcolor,

collectors.

maxby

(comparator.

comparingdouble

(frog:

:getsize)))

);system.out.

println

(map3)

;}

執行結果

, frog

], blue=

[frog

, frog

], yellow=

[frog

, frog]}

], blue=optional[frog

], yellow=optional[frog

]}

初探java8函式式程式設計

lambda引用的是值,不是變數,所以,lambda中引用變數,必須是final變數或者既成事實上的final變數 collect tolist 方法由stream 裡的值生成乙個列表,是乙個及早求值操作 listcollected stream.of a b c collect collector...

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