使用Java8流修改列表中的字符串列表
我试图修改存储在ArrayList中的字符串。这不仅仅是打印修改后的列表。修剪后,列表将被进一步向下推到系统中 我提出的解决方案是可行的,但我想知道我是否充分利用了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
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));