【发布时间】:2019-06-03 14:09:00
【问题描述】:
我有一个语言列表,如英语、法语等。我还有一个单词列表,如 apple、orange 等。对于每个单词,我想创建一个如下所示的地图:
地图地图 = {english = apple, italian = mela}
为了得到翻译后的Word,我有一个返回可选的函数。该方法的签名如下所示:
Optional<TranslatedWord> getTranslatedWord(String word, Language language);
这是我编写的用于将单词收集到地图中的代码
List<Language> languages = {english, italian, french};
for(String w : words) {
Map<Language, TranslatedWord> map = languages.stream().collect(Collectors.ToMap(language -> language,
language -> getTranslatedWord(w, language));
doSomethingWithThisMap(map);
}
问题是 getTranslatedWord() 返回一个 Optional。仅当可选项中有值时,我才需要将其收集到 Map 中。我怎样才能做到这一点?
【问题讨论】:
标签: java java-stream optional collectors