第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Lambda 函數(shù)不會(huì)從外部作用域更新數(shù)組

Lambda 函數(shù)不會(huì)從外部作用域更新數(shù)組

拉丁的傳說 2023-03-31 09:43:42
如您所知,“在封閉范圍內(nèi)定義的局部變量必須是最終的或?qū)嶋H上是最終的”。所以我有以下代碼List<Airline> filteredAirlines = new ArrayList<>();JavaRDD<Company> flightCompanyJavaRDD = rdd.map(f -> {      ......      results = foo(f);      filteredAirlines.addAll(results.getFilteredAirlines());      System.out.println(results.getFilteredAirlines().size());      Company convertedCompanyResult = convert(results);      return convertedCompanyResult;});......System.out.println(filteredArilines.size());Line 1 printed1和 line 2 printed 0。似乎該列表filteredArilines未被填充。任何想法為什么?以及如何獲取外部可用的 lambda 表達(dá)式中的值?謝謝。
查看完整描述

3 回答

?
吃雞游戲

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊

  1. 你的 lambda 被稱為閉包,因?yàn)樗鼜耐獠糠秶ㄟ@里是你的數(shù)組)捕獲一些東西。

  2. 完全不鼓勵(lì)使用捕獲旨在修改的對(duì)象的閉包。這是因?yàn)樗赡苤辉诒镜啬J较鹿ぷ鳎簩?shí)際上在序列化/反序列化后的集群模式下,每個(gè)捕獲的對(duì)象都會(huì)有一個(gè)獨(dú)立存在于每個(gè) JVM 上的版本。

  3. 做你想做的最干凈的方法可能是使用Accumulators


查看完整回答
反對(duì) 回復(fù) 2023-03-31
?
精慕HU

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());


查看完整回答
反對(duì) 回復(fù) 2023-03-31
?
躍然一笑

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仍然是空的。


查看完整回答
反對(duì) 回復(fù) 2023-03-31
  • 3 回答
  • 0 關(guān)注
  • 146 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)