Java 如何使用流api将单独的单词字符串转换为单独的列表元素
尝试学习流API。 我有一个字符串列表,如下所示:Java 如何使用流api将单独的单词字符串转换为单独的列表元素,java,java-8,java-stream,Java,Java 8,Java Stream,尝试学习流API。 我有一个字符串列表,如下所示: 118.111.97.113 119.122.122.122 122.122.122.97 122.122.122.99 122.122.122.100 我需要按“”将其拆分,并将单独的数字作为单独的值放入新集合。 像这样: 118 111 97 113 119 ... 我知道flatMap方法,它可以假设一个值并返回多个值,但是如何正确使用它,没有人知道。你能帮我或给我一些建议吗 谢谢 你可以这样做 List<String>
118.111.97.113
119.122.122.122
122.122.122.97
122.122.122.99
122.122.122.100
我需要按“
”将其拆分,并将单独的数字作为单独的值放入新集合。
像这样:
118
111
97
113
119
...
我知道flatMap
方法,它可以假设一个值并返回多个值,但是如何正确使用它,没有人知道。你能帮我或给我一些建议吗
谢谢 你可以这样做
List<String> initial;
List<String> all = initial.stream().flatMap(str -> Arrays.stream(str.split("\\.")))
.collect(Collectors.toList());
列表首字母;
List all=initial.stream().flatMap(str->Arrays.stream(str.split(“\\”))
.collect(Collectors.toList());
仅以下几行:
Pattern p = Pattern.compile("\\.");
yourStreamOfStrings.flatMap(p::splitAsStream)
.collect(Collectors.toList());
把
flatMap
想象成用种子挤压一个水果,你得到一个水果作为输入,很多种子作为输入output@Eugene噢!!!好吃@Eugene“\\。”
是一个单字符分隔符,它的字符串。split
根本不会创建模式。@Holger这不是一个内部细节吗?:)@Eugene与假设每次创建模式
都很昂贵或者String.split后没有模式
缓存没有什么不同。有时,当你必须在两个等价的变体之间做出选择时,你必须考虑从实现中得到什么合理的东西,以及共同实现(S)实际上做了什么……@尤金,我做了一些快速测试,列出了OK 100K ELEM,50次迭代,并且在构建之前没有太快。有时甚至是slower@azro那么我想这是一些热身的问题,而不是哪一个更慢/更快的迹象