gpt4 book ai didi

Java 8 从数组中流式传输唯一字符

转载 作者:行者123 更新时间:2023-12-01 06:38:14 25 4
gpt4 key购买 nike

尝试编写一个简单的程序,用于打印 Java8 中输入数组中的唯一单词。例如,如果输入是

   String[] input = {"This", "is", "This", "not"};

程序应输出 [T, h, i, s, n, o, t] ,元素的顺序应遵循输入中出现的相同模式。我的方法是分割输入,然后mapdistinct,最后收集到List。但是下面的代码打印的是流列表而不是单词,我错过了什么?例如

String[] input = {"This", "is", "This", "not"};
System.out.println(Arrays.stream(input)
.map(word -> word.split(""))
.map(Arrays::stream)
.distinct()
.collect(toList()));

电流输出

[java.util.stream.ReferencePipeline$Head@548c4f57, java.util.stream.ReferencePipeline$Head@1218025c, java.util.stream.ReferencePipeline$Head@816f27d, java.util.stream.ReferencePipeline$Head@87aac27]

我有兴趣看看 Java8 中是否还有其他方法可以实现相同的目的。

最佳答案

您需要使用flatMap为了与流的内容进行映射。正如您注意到 Arrays::stream 生成单独的流,您想要的是将所有这些流展平为单个流,例如

   System.out.println(Stream.of(input)
.map(w -> w.split(""))
.flatMap(Arrays::stream)
.distinct()
.collect(Collectors.toList()));

输出

[T, h, i, s, n, o, t]

关于Java 8 从数组中流式传输唯一字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27881627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com