Way*_*eio 5 java lambda filter java-8 java-stream
此代码会将 mylist 中的所有元素添加到 mylist2 中。
如果它找到逗号并将它们分隔开,我该如何更改它以添加元素?
ArrayList<String> mylist = new ArrayList<String>();
mylist.add("test");
mylist.add("test2, test3");
ArrayList<String> mylist2 = new ArrayList<String>();
mylist.stream()
.forEach(s -> mylist2.add(s));
mylist2.stream().forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
因此,当前输出为:
test
test2, test3
Run Code Online (Sandbox Code Playgroud)
我需要第二个数组列表来包含然后打印:
test
test2
test3
Run Code Online (Sandbox Code Playgroud)
我知道 Java 8 中有过滤器。我可以做类似的事情吗
.filter(p -> p.contains(",")...
那么要分什么东西呢?
你可以做一个flatMap包括Pattern::splitAsStream喜欢
Pattern splitAtComma = Pattern.compile("\\s*,\\s*");
List<String> myList2 = mylist.stream().flatMap(splitAtComma::splitAsStream)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
您可以split每个字符串和flatMap结果数组:
mylist.stream()
.flatMap(x -> Arrays.stream(x.split(", ")))
.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4292 次 |
| 最近记录: |