k13*_*13i 5 java functional-programming stream java-8 java-stream
我有一个元素流.我想将每个元素映射到两个相同类型的不同元素,以便我的流将是两倍长.我通过连接两个流来做到这一点,但我想知道是否可以做到这一点更简单?到目前为止我做了什么:
private List<String> getTranslationFilesNames() {
return Stream.concat(SUPPORTED_LANGUAGES.stream()
.map(lang -> PATH_TO_FILES_WITH_TRANSLATIONS_1 + lang + FILE_EXTENSION),
SUPPORTED_LANGUAGES.stream()
.map(lang -> PATH_TO_FILES_WITH_TRANSLATIONS_2 + lang + FILE_EXTENSION))
.collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)
我觉得这个解决方案不是很优雅.是否有更好的方法来达到同样的效果?
如果您不关心订单,可以将每个元素映射到一对元素flatMap:
private List<String> getTranslationFilesNames() {
return SUPPORTED_LANGUAGES.stream()
.flatMap(lang -> Stream.of(PATH_TO_FILES_WITH_TRANSLATIONS_1 + lang + FILE_EXTENSION,
PATH_TO_FILES_WITH_TRANSLATIONS_2 + lang + FILE_EXTENSION)),
.collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
709 次 |
| 最近记录: |