我正在学习Java 8,遇到了一种情况。我必须在哪里遍历字符串列表,然后将它们转换为upperCase。可能的解决方案是流式处理列表。在Intellij的许多建议中,以下两项似乎很有用。
list.stream()
.map(String::toUpperCase)
Run Code Online (Sandbox Code Playgroud)
要么
list.stream().
forEach(p -> p.toUpperCase())
Run Code Online (Sandbox Code Playgroud)
我对使用哪个建议以及所有建议的用例感到困惑。我可以就所有建议使用哪种方法以及如何理解获得帮助吗?
Stream.map()除非你在结束该管道将永远不会运行终端操作,像forEach()。但是调用toUpperCase()a forEach()也不会做任何事情,因为字符串是不可变的。String.toUpperCase()不更改字符串;它返回一个新的。
如果您只想就地更新列表,则可以使用
list.replaceAll(String::toUpperCase);
Run Code Online (Sandbox Code Playgroud)
它实际上将每个元素替换为传递函数的结果。
如果要将结果显示在新列表中,请将该map()代码段与收集器一起使用:
List<String> list2 = list.stream()
.map(String::toUpperCase)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |