java - 从流中获取字符串列表

标签 java java-8 java-stream

我有一个包含字符串和字符串列表的流,我想获取所有值作为字符串列表。
无论如何要通过一些流操作来做到这一点?

Stream stream = Stream.of("v1", Arrays.asList("v2, v3"));

最佳答案

通常,您不会在列表中混合使用这些不同的类型,但是可以从中获得所需的结果。每个单个字符串都可以转换为一个字符串流,每个字符串列表都可以转换为多个字符串流;然后flatMap将所有流平展为一个字符串流。

List<String> strings = l.stream()
        .flatMap(o -> {
                if (o instanceof List) {
                    return ((List<String>) o).stream();
                }
                return Stream.of((String) o);
            })
        .collect(Collectors.toList());

您将收到unchecked cast警告,但这就是在一个容器中混合使用不同类型的警告。

关于java - 从流中获取字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44888474/

相关文章:

java-8 - Java 8 -> Collectors.toMap -> 重复键

java - 用 Java 8 Streams 替换传统的 newForLoop

java - 如何禁用/隐藏 JxBrowser 许可证信息

c# - 哪种设计方法更好——返回 boolean 值还是抛出异常?

java - 测试线性类关系

Java 8 可选的 asSet()

java - Tomcat 7 && Java 8 中的严重 : Unable to process Jar entry [module-info. 类]

Java 流 - 映射列表到简化的映射列表

java - 累积 Java Stream,然后才处理它

java - 在哪里可以找到 CTR 或 GCM 分组密码模式的 Java/Kotlin 实现?