我正在尝试确定使用即将发布的 Java 8 中的新 lambdas 功能更改 List
中所有值的正确方法,而无需创建 **新**列表
。
这与调用者传入 List
并且需要应用函数以将所有内容更改为新值的情况有关。例如,Collections.sort(list)
就地更改列表的方式。
给定这个转换函数和这个起始列表,在不创建新列表的情况下将函数应用于原始列表中的所有值的最简单方法是什么?
String function(String s){
return s.toUppercase(); // or something else more complex
}
List<String> list = Arrays.asList("Bob", "Steve", "Jim", "Arbby");
将更改应用到所有就地值的通常方法是这样的:
for (int i = 0; i < list.size(); i++) {
list.set(i, function( list.get(i) );
}
lambdas 和 Java 8 是否提供:
- 一种更简单、更具表现力的方式?
- 一种无需设置
for(..)
循环的所有脚手架即可执行此操作的方法?
最佳答案
List<String> list = Arrays.asList("Bob", "Steve", "Jim", "Arbby");
list.replaceAll(String::toUpperCase);
关于java - 是否可以使用 lambda 就地更改列表的值(无需创建新列表)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19697932/