如何使用流api将单独的单词串转换为单独的列表元素

Rom*_*kyi 3 java java-8 java-stream

尝试研究Stream API.所以,我有一个像这样的字符串列表:

118.111.97.113
119.122.122.122
122.122.122.97
122.122.122.99
122.122.122.100
Run Code Online (Sandbox Code Playgroud)

我需要将它拆分为' .',并将单独的数字作为单独的值放入新集合中.像这样:

118
111
97
113
119
...
Run Code Online (Sandbox Code Playgroud)

我知道flatMap方法,可以假设一个值并返回几个,但如何正确使用它,没有一个想法.你能帮助我或提出一些想法吗?

谢谢!

azr*_*zro 5

你可能会这样做

List<String> initial;
List<String> all = initial.stream().flatMap(str -> Arrays.stream(str.split("\\.")))
                                   .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

  • @Eugene`"\\."`是一个单字符分隔符,`String.split`根本不会创建`Pattern`. (3认同)

Eug*_*ene 5

单独的东西:

Pattern p = Pattern.compile("\\.");
yourStreamOfStrings.flatMap(p::splitAsStream)
            .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)