所以我们假设我们在一个数组中有一个字符串:"randomText1 randomText2",它被加载到Stream中.
现在我回顾一下这个流中的所有行,然后将每一行分成空格字符.
strings
.map(string -> string.split(" "))
.flatMap(Arrays::stream)
.collect(new MyClass(string1, string2));
Run Code Online (Sandbox Code Playgroud)
如何获取字符串的两边并从那里做任何我想要的东西?
从Oracle文档(Oracle doc链接)我只能找到一些更难的情况,其中一个人将使用Map<>
例如.但我无法使他们的解决方案适应我这个更简单的问题.
Hol*_*ger 13
使用flatMap
不是工作的正确工具.你显然想做的是
strings.map(string -> string.split(" ", 2))
.map(array -> new MyClass(array[0], array[1]))
Run Code Online (Sandbox Code Playgroud)
您可以通过使用.collect(Collectors.toList())
获取List<MyClass>
或.findAny()
获取单个MyClass
实例(如果有)来进一步处理流.
一般来说,流数组,如果你想均匀地处理所有元素,即是唯一有用的没有,如果他们的立场有其必须被保存为后续操作具有特殊意义.
而且,如果你真的想创造的词或令牌的扁平流,你不应该使用的组合String.split
,并Arrays.stream
为将创建并填写不必要的中间阵列.在这种情况下使用
strings.flatMap(Pattern.compile(" ")::splitAsStream)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17132 次 |
最近记录: |