gpt4 book ai didi

java - 使用 java Streams 转换嵌套列表

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:37:40 26 4
gpt4 key购买 nike

是否有可能使用 Stream 获得相同的结果(因为我目前正在使用以下嵌套 for 循环)?

List<String> people = Arrays.asList("John", "Adam");
List<String> dogs = Arrays.asList("alex", "rex");

List<List<String>> list = new ArrayList<List<String>>();
list.add(people);
list.add(dogs);

List<List<String>> list2 = new ArrayList<List<String>>();
for (int i = 0; i < list.size(); i++) {
list2.add(new ArrayList<>());
for (int j = 0; j < list.get(i).size(); j++) {
list2.get(i).add(list.get(i).get(j).toUpperCase());
}
}
System.out.println(list2);

我想得到这样的回应:

[[JOHN, ADAM], [ALEX, REX]]

使用以下:

list.stream().flatMap(l -> l.stream()).map(String::toUpperCase).collect(Collectors.toList());

我只能得到这样的东西:

[JOHN, ADAM, ALEX, REX]

最佳答案

flatMap 不会帮助您,因为您不想要平面输出。您应该将每个内部 List 分别转换为大写的 List,然后将所有这些 List 收集到最终的嵌套输出 List

List<List<String>> list2 = list.stream()
.map(l -> l.stream().map(String::toUpperCase).collect(Collectors.toList()))
.collect(Collectors.toList());

输出:

[[JOHN, ADAM], [ALEX, REX]]

关于java - 使用 java Streams 转换嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54278165/

26 4 0