gpt4 book ai didi

java - 如何在java Stream中捕获拆分的字符串

转载 作者:搜寻专家 更新时间:2023-11-01 04:02:46 26 4
gpt4 key购买 nike

假设我们有一个字符串:数组中的“randomText1 randomText2”,它被加载到 Stream 中。

现在我遍历该流中的所有行,并在空格字符处拆分每一行。

strings
.map(string -> string.split(" "))
.flatMap(Arrays::stream)
.collect(new MyClass(string1, string2));

我怎样才能得到字符串的两边,并从那里开始对它们做任何我想做的事?

从 Oracle 文档 ( Oracle doc link ) 中,我只找到了一些更难的案例,其中人们会使用 Map<>例如。但我无法让他们的解决方案适合我这个更简单的问题。

最佳答案

使用 flatMap不是这项工作的正确工具。你显然想做的是

strings.map(string -> string.split(" ", 2))
.map(array -> new MyClass(array[0], array[1]))

您可以使用 .collect(Collectors.toList()) 进一步处理流得到 List<MyClass>.findAny()得到一个MyClass实例(如果有的话)。

一般来说,流式处理数组仅在您想要统一处理所有元素时才有用,即不是如果它们的位置具有特殊含义且必须为后续操作保留。


如果您真的想创建一个平坦的单词或标记流,则不应使用 String.split 的组合和 Arrays.stream因为这将创建并填充一个不必要的中间数组。在这种情况下使用

strings.flatMap(Pattern.compile(" ")::splitAsStream)

参见 Pattern.splitAsStream

关于java - 如何在java Stream中捕获拆分的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29807947/

26 4 0