stream().map()中运用两次map()方法,该如何使用
时间: 2023-12-16 16:26:22 浏览: 14
在`stream().map()`中运用两次`map()`方法,可以使用链式调用的方式,将两个`map()`方法连接起来。第一个`map()`方法将流中的元素映射为另一种类型,第二个`map()`方法再将第一个`map()`方法映射后的结果进行进一步的映射。下面是一个例子:
假设有一个`List<String>`类型的列表,我们想要将其中的每个字符串转换为大写,并将其中的每个字符都用括号括起来。可以使用两个`map()`方法来实现:
```java
List<String> list = Arrays.asList("hello", "world", "java");
List<String> result = list.stream()
.map(s -> s.toUpperCase())
.map(s -> {
StringBuilder sb = new StringBuilder();
for (char c : s.toCharArray()) {
sb.append("(").append(c).append(")");
}
return sb.toString();
})
.collect(Collectors.toList());
System.out.println(result); // 输出:[(H)(E)(L)(L)(O), (W)(O)(R)(L)(D), (J)(A)(V)(A)]
```
上述代码中,第一个`map()`方法将每个字符串转换为大写,第二个`map()`方法将每个大写字符串中的每个字符都用括号括起来。最终得到的结果是一个`List<String>`类型的列表,其中每个字符串都是由原来的字符串转换而来的。