Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.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
使用Java8流修改列表中的字符串列表_Java_Java Stream - Fatal编程技术网

使用Java8流修改列表中的字符串列表

使用Java8流修改列表中的字符串列表,java,java-stream,Java,Java Stream,我试图修改存储在ArrayList中的字符串。这不仅仅是打印修改后的列表。修剪后,列表将被进一步向下推到系统中 我提出的解决方案是可行的,但我想知道我是否充分利用了Java8流的潜力 工作正常但远不是完美的解决方案: import static java.util.stream.Collectors.toList; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class

我试图修改存储在ArrayList中的字符串。这不仅仅是打印修改后的列表。修剪后,列表将被进一步向下推到系统中

我提出的解决方案是可行的,但我想知道我是否充分利用了Java8流的潜力

工作正常但远不是完美的解决方案:

import static java.util.stream.Collectors.toList;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {

    public static void main(String[] args) {

        ArrayList<List<String>> listOfListsOfStrings = new ArrayList<>();
        listOfListsOfStrings.add(Arrays.asList("abc ", "bd ", " asd ", "s"));
        listOfListsOfStrings.add(Arrays.asList("123 ", "45 ", " 753 ", "111"));
        listOfListsOfStrings.add(Arrays.asList("sdfg2 ", "b23d ", " as123d ", "1s1"));

        ArrayList<List<String>> newListOfLists = new ArrayList<>();
        for (List<String> listOfStrings : listOfListsOfStrings) {
            List<String> newList = listOfStrings.stream().map(String::trim).collect(toList());
            newListOfLists.add(newList);
        }

        listOfListsOfStrings.forEach(list -> list.forEach(System.out::println));
        System.out.println("------------------");
        newListOfLists.forEach(list -> list.forEach(System.out::println));

    }
}

我想你在追求这个:

    ArrayList<List<String>> newListOfLists = listOfListsOfStrings.stream()
            .map(list -> list.stream()
                    .map(String::trim)
                    .collect(Collectors.toList()))
            .collect(Collectors.toCollection(ArrayList::new));

记住要在酷代码和可读/可理解代码之间保持平衡。不要强迫自己使用它们。你的方法也是做你想做的事情的好方法。谢谢你的回答。我只是想知道是否有一种方法可以在这里提供基于Java8流的平滑一行程序。
    listOfListsOfStrings.forEach(list -> list.replaceAll(String::trim));