3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
你的 lambda 被稱為閉包,因?yàn)樗鼜耐獠糠秶ㄟ@里是你的數(shù)組)捕獲一些東西。
完全不鼓勵(lì)使用捕獲旨在修改的對(duì)象的閉包。這是因?yàn)樗赡苤辉诒镜啬J较鹿ぷ鳎簩?shí)際上在序列化/反序列化后的集群模式下,每個(gè)捕獲的對(duì)象都會(huì)有一個(gè)獨(dú)立存在于每個(gè) JVM 上的版本。
做你想做的最干凈的方法可能是使用Accumulators

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以像這樣將結(jié)果直接映射到列表:
List<Airline> filteredAirlines = rdd.map(f -> {
......
results = foo();
System.out.println(results.getFilteredAirlines().size());
return results.getFilteredAirlines();
}).collect(Collectors.toList());

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
我不知道什么rdd
是什么,rdd.map()
做什么,但你傳遞給它的 lambda 表達(dá)式并不意味著它會(huì)立即執(zhí)行(或根本不執(zhí)行)。
因此,當(dāng)您在代碼段的最后一行打印時(shí)filteredArilines.size()
,lambda 表達(dá)式可能尚未執(zhí)行,因此List
仍然是空的。
添加回答
舉報(bào)