Java 8流 - 将元素映射到元素对

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)

我觉得这个解决方案不是很优雅.是否有更好的方法来达到同样的效果?

Era*_*ran 5

如果您不关心订单,可以将每个元素映射到一对元素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)