我們來看乙個不同的領域:執行交易的交易員。你的經理讓你為八個查詢找到答案。你能做到嗎?
該自己先嘗試一下作為練習。
(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 中綴表示法呼叫函式時函...