Daw*_*wid 3 java functional-programming java-8 java-stream
是否有可能使用Streams 获得相同的结果(正如我目前使用以下嵌套的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);
Run Code Online (Sandbox Code Playgroud)
我想得到这样的回应:
[[JOHN, ADAM], [ALEX, REX]]
Run Code Online (Sandbox Code Playgroud)
使用以下内容Stream:
list.stream().flatMap(l -> l.stream()).map(String::toUpperCase).collect(Collectors.toList());
我只能得到这样的东西:
[JOHN, ADAM, ALEX, REX]
Run Code Online (Sandbox Code Playgroud)
flatMap不会帮助你,因为你不想要平坦的输出.您应该将每个内部List单独转换为大写List,然后将所有这些内容收集List到最终的嵌套输出中List.
List<List<String>> list2 = list.stream()
.map(l -> l.stream().map(String::toUpperCase).collect(Collectors.toList()))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
输出:
[[JOHN, ADAM], [ALEX, REX]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |