我正在尝试修改存储在ArrayList中的字符串。这不仅仅是打印修改后的列表。修剪后,列表将被进一步推送到系统中。
我提出的解决方案正在工作,但是我想知道我是否正在充分利用Java 8 Streams的潜力。
有效(但远非完美)的解决方案:
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));
}
}
答案 0 :(得分:0)
我认为您是在追求这一点:
ArrayList<List<String>> newListOfLists = listOfListsOfStrings.stream()
.map(list -> list.stream()
.map(String::trim)
.collect(Collectors.toList()))
.collect(Collectors.toCollection(ArrayList::new));
我假设您不允许修改列表的原始列表。如果是的话,就可以得到一线(即使不使用流API的情况):
listOfListsOfStrings.forEach(list -> list.replaceAll(String::trim));