PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
java
Re: [問題] Lambda語法
作者:
JustinHere
(良葛格)
2015-10-16 10:18:49
推 Argosde: order 1-n* orderDetail 1-1* product 10/15 22:36
→ Argosde: filter會變成 getOrderdetails().stream().anyMatch(...) 10/15 22:39
→ Argosde: 這樣filter會篩選到orderDetails嗎? 10/15 22:41
那是我看錯了,不過道理還是一樣,第一步是過濾出 Order,然後再對 Order
中的細節做過濾與處理(轉為字串描述),第三步則是顯示結果 …
這問題其實很有趣,也是重構 for 迴圈時不錯的案例…
orders.stream()
.filter(order -> anyAmountGTFiveAndHasProduct(order)) // 符合的 Order
.map(order -> descOfAmountGTFiveAndHasProduct(order)) // 細節描述
.forEach(out::println); // 顯示
public static boolean anyAmountGTFiveAndHasProduct(Order order) {
return order.getOrdertails().stream().anyMatch(
detail -> isAmountGTFiveAndHasProduct(detail));
}
public static String descOfAmountGTFiveAndHasProduct(Order order) {
return order.getOrdertails().stream()
.filter(detail -> isAmountGTFiveAndHasProduct(detail))
.map(detail -> String.format("%s Buy %s * %d", order.getId(), detail.getProduct().getName(), detail.getAmount()))
.collect(joining("%n"));
}
public static boolean isAmountGTFiveAndHasProduct(OrderDetail detail) {
return detail.getAmount() > 5 && detail.getProduct() != null;
}
作者:
Argosde
2015-10-19 20:21:00
謝謝解惑, 有測試成功!
https://drive.google.com/open?id=0ByNlxZR6IEOWN1N5VVN
wNDdtY1E上面是測試專案, 內含三種字串顯示方式
繼續閱讀
[JSP ] 從html button呼叫 java code
kuro44776
Re: [問題] Lambda語法
JustinHere
[問題] Java web context.xml 加密
gpctv
[書籍] 徵書 猛虎和深入淺出 考scwcd
serica
Re: [問題] Lambda語法
kojilin
[問題] Lambda語法
Argosde
[問題] 新手問題 撲克牌洗牌
maple0517
[問題] 如何使輸出報表為PPT檔
paul2h
Fw: [問題] Servlet共用資料庫連線設定
qazsd
[JSP ] 如何改專案目錄
qazsd
Links
booklink
Contact Us: admin [ a t ] ucptt.com