Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将嵌套循环转换为流Java 8_Java_Loops_Java 8_Java Stream - Fatal编程技术网

将嵌套循环转换为流Java 8

将嵌套循环转换为流Java 8,java,loops,java-8,java-stream,Java,Loops,Java 8,Java Stream,我正在尝试将下面的嵌套循环转换为streams Java 8 newself2中的每个元素都是字符串列表-[“1 2”,“3 4”]需要更改为[“1”,“2”,“3”,“4”] 现在我知道了如何将内部for循环中的拆分数组添加到x的新列表中 非常感谢您的帮助。以下是我的做法: List<List<String>> result = newself2.stream() .map(list -> list.stream() .flatMa

我正在尝试将下面的嵌套循环转换为streams Java 8

newself2中的每个元素都是字符串列表-[“1 2”,“3 4”]需要更改为[“1”,“2”,“3”,“4”]

现在我知道了如何将内部for循环中的拆分数组添加到
x
的新列表中

非常感谢您的帮助。

以下是我的做法:

List<List<String>> result = newself2.stream()
    .map(list -> list.stream()
            .flatMap(string -> Arrays.stream(string.split(" ")))
            .collect(Collectors.toList()))
    .collect(Collectors.toList());
List result=newself2.stream()
.map(list->list.stream()
.flatMap(字符串->数组.stream(字符串.split(“”))
.collect(收集器.toList())
.collect(Collectors.toList());

这是另一种解决方案

Function<List<String>,List<String>> function = list->Arrays.asList(list.stream()
            .reduce("",(s, s2) -> s.concat(s2.replace(" ",",")+",")).split(","));

首先谢谢你的回答!它工作得很好!但我仍然想知道——因为我是新手——这是做这件事的最佳方式吗?PaulAlwin streams是否有可能加快速度?@PaulAlwin streams有一些开销,因为他们需要创建所有内部基础设施来完成工作。因此,for通常具有更好的性能。另一方面,流很容易并行化,并且扩展得更好。关于我的解决方案的复杂性,它与你的解决方案相同,即与空间分隔元素的数量成线性关系。
List<List<String>> result = newself2.stream()
    .map(list -> list.stream()
            .flatMap(string -> Arrays.stream(string.split(" ")))
            .collect(Collectors.toList()))
    .collect(Collectors.toList());
Function<List<String>,List<String>> function = list->Arrays.asList(list.stream()
            .reduce("",(s, s2) -> s.concat(s2.replace(" ",",")+",")).split(","));
 List<List<String>> finalResult = lists
                                 .stream()
                                 .map(function::apply)
                                 .collect(Collectors.toList());
  List<List<String>> finalResult = new ArrayList<>();
    for (List<String> list : lists) {
        String acc = "";
        for (String s : list) {
            acc = acc.concat(s.replace(" ", ",") + ",");
        }
        finalResult.add(Arrays.asList(acc.split(",")));
    }