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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Map 和 orElse 返回不同的子類型

Map 和 orElse 返回不同的子類型

慕容3067478 2023-03-17 15:05:07
我有兩個功能 - 一個返回Set<String>,另一個返回List<String>。private static List<String> getStringList(final String factor) {    ....}private static Set<String> getStringSet() {    ....}現在,我有一個返回 a 的函數Collection<String>,它會根據特定條件依次調用上述函數。我想做這樣的事情:private static Collection<String> getStringCollection() {    Optional<String> factor = getFactor();    return factor.filter(LambdaTest::someCondition)            .map(LambdaTest::getStringList)            .orElse(getStringSet());}但我得到這個錯誤錯誤:(24, 37) java: 類型不兼容:java.util.Set 無法轉換為 java.util.List我能理解這里發(fā)生了什么。但是,有沒有一種方法可以在不進行像這樣精心設計的 if-else 語句的情況下實現類似的效果呢?private static Collection<String> getStringCollection() {    Optional<String> factor = getFactor();    if(factor.isPresent() && someCondition(factor.get())) {        return getStringList(factor.get());    }    return getStringSet();}
查看完整描述

2 回答

?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

您可以使用通用類型規(guī)范來強制getStringList將其視為Collection<String>

return factor.filter(LambdaTest::someCondition)
             .<Collection<String>> map(LambdaTest::getStringList)
             .orElse(getStringSet());


查看完整回答
反對 回復 2023-03-17
?
達令說

TA貢獻1821條經驗 獲得超6個贊

不確定這是否明顯并在問題的后半部分說明,但您還可以做的是更改方法的簽名getStringList以返回 a Collection<String>,保持其實現與之前相同。


這樣完整的實現看起來像:


Collection<String> getStringList(final String factor) { ... }


Set<String> getStringSet() { ... }


private Collection<String> getStringCollection() {

    Optional<String> factor = getFactor();

    return factor.filter(this::someCondition)

            .map(this::getStringList)

            .orElseGet(this::getStringSet);

}

另一種選擇是初始化SetinorElse以返回Listusing new ArrayList<>:


private Collection<String> getStringCollection() {

    Optional<String> factor = getFactor();

    return factor.filter(this::someCondition)

            .map(this::getStringList)

            .orElse(new ArrayList<>(getStringSet()));

}


查看完整回答
反對 回復 2023-03-17
  • 2 回答
  • 0 關注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號