學習lambda02 lambda 語法練習

2021-09-19 20:53:35 字數 4150 閱讀 9056

我們來看乙個不同的領域:執行交易的交易員。你的經理讓你為八個查詢找到答案。你能做到嗎?

該自己先嘗試一下作為練習。

(1) 找出2023年發生的所有交易,並按交易額排序(從低到高)。

(2) 交易員都在哪些不同的城市工作過?

(3) 查詢所有來自於劍橋的交易員,並按姓名排序。

(4) 返回所有交易員的姓名字串,按字母順序排序。

(5) 有沒有交易員是在公尺蘭工作的?

(6) 列印生活在劍橋的交易員的所有交易額。

(7) 所有交易中,最高的交易額是多少?

(8) 找到交易額最小的交易。

交易員資訊

/**

*交易員

*/public

class

trader

交易記錄

/**

* 交易記錄

*/public

class

transaction

交易資訊

trader raoul =

newtrader

("raoul"

,"cambridge");

trader mario =

newtrader

("mario"

,"milan");

trader alan =

newtrader

("alan"

,"cambridge");

trader brian =

newtrader

("brian"

,"cambridge");

list

transactions = arrays.

aslist

(new

transaction

(brian,

2011

,300),

newtransaction

(raoul,

2012

,1000),

newtransaction

(raoul,

2011

,400),

newtransaction

(mario,

2012

,710),

newtransaction

(mario,

2012

,700),

newtransaction

(alan,

2012

,950))

;

以下是筆者解答過程

//(1) 找出2023年發生的所有交易,並按交易額排序(從高到低)。

list

result1 = transactions.

parallelstream()

.filter

(e -

> e.

getyear()

==2011).

sorted

(comparator.

comparing

(transaction:

:getvalue)

.reversed()

).collect

(collectors.

tolist()

);system.out.

println

(result1)

;//(2) 交易員都在哪些不同的城市工作過?

list

result2 = transactions.

parallelstream()

.map

(e -

> e.

gettrader()

.getcity()

).distinct()

.collect

(collectors.

tolist()

);system.out.

println

(result2)

;//(3) 查詢所有來自於劍橋的交易員,並按姓名排序。

list

result3 = transactions.

parallelstream()

.filter

(e -

>

"cambridge"

.equalsignorecase

(e.gettrader()

.getcity()

)).map

(transaction:

:gettrader)

.distinct()

.sorted

(comparator.

comparing

(trader:

:getname)).

collect

(collectors.

tolist()

);system.out.

println

(result3)

;//(4) 返回所有交易員的姓名字串,按字母順序排序。 就是將所有的名字全部都拼接成乙個字串 例如:tom jack

string result4 = transactions.

parallelstream()

.map

(transaction:

:gettrader)

.map

(trader:

:getname)

.sorted()

.collect

(joining()

);system.out.

println

(result4)

;//(5) 有沒有交易員是在公尺蘭工作的?

boolean result5 = transactions.

parallelstream()

.anymatch

(e -

>

"milan"

.equals

(e.gettrader()

.getcity()

)); system.out.

println

(result5)

;//(6) 列印生活在劍橋的交易員的所有交易額。

optional

result6 = transactions.

parallelstream()

.filter

(e -

>

"cambridge"

.equals

(e.gettrader()

.getcity()

)).map

(transaction:

:getvalue)

.reduce

((a, b)

-> a + b);if

(result6.

ispresent()

) system.out.

println

(result6.

get())

;//(7) 所有交易中,最高的交易額是多少?

optional

result7 = transactions.

parallelstream()

.map

(transaction:

:getvalue)

.reduce

(integer:

:max);if

(result7.

ispresent()

) system.out.

println

(result7.

get())

;//(8) 找到交易額最小的交易。

optional

result8 = transactions.

parallelstream()

.min

(comparator

.comparing

(transaction:

:getvalue));

if(result8.

ispresent()

) system.out.

println

(result8.

get())

;

lambda函式if Y分鐘入門lambda演算

本文為我個人對learn x in y minutes系列的lambda calculus部分內容的中文翻譯 首發部落格位址y分鐘入門lambda演演算法 非常推薦有能力的讀者直接去閱讀原文。包含部分譯者新增的細節補充 最初由alonzo church創造的lambda演算 演算 是世界上最小的程式...

python學習之map函式和lambda函式

map 是 python 內建的高階函式,它接收乙個函式 f 和乙個 list,並通過把函式 f 依次作用在 list 的每個元素上,得到乙個新的 list 並返回。map function,iterable,在map中,不會對itetable進行修改 def fun x return 2 x t ...

學習kotlin第11天 函式和lambda表示式

繼續瀏覽,只能說是繼續瀏覽了,根本就不是踩坑嘛,都踩不平。坑1 第一天就見到fun關鍵字了,結果現在才告訴我這是宣告函式,呼叫使用傳統的 變數名 函式名 引數 呼叫成員函式用 點表示法 引數列表用 name type value 表示法並用逗號隔開。這文件,已經無力吐槽。坑2 中綴表示法呼叫函式時函...