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);
因此,当前输出为:
test
test2, test3
我需要第二个数组列表来包含然后打印:
test
test2
test3
我知道 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());
您可以split每个字符串和flatMap结果数组:
mylist.stream()
      .flatMap(x -> Arrays.stream(x.split(", ")))
      .forEach(System.out::println);
| 归档时间: | 
 | 
| 查看次数: | 4292 次 | 
| 最近记录: |