可以使用lambda来就地更改List的值(不创建新列表)吗?

The*_*tor 16 java algorithm collections lambda java-8

根据StackOverflow-On Topic,这是一个特定的编程问题,一个软件算法,关于程序员常用的软件工具,它是一个实用的,可回答的问题,是软件开发所特有的.

...

我试图确定List在即将发布的Java 8中使用新的lambdas功能更改所有值的正确方法,而无需创建**new** List.

这适用于List调用者传入a并需要应用函数将所有内容更改为新值的时间.例如,该方式Collections.sort(list)就地更改列表.

给这个转换函数和这个起始列表最简单的方法是将函数应用于原始列表中的所有值而不创建新列表?

String function(String s){ 
    return s.toUppercase(); // or something else more complex
}

List<String> list = Arrays.asList("Bob", "Steve", "Jim", "Arbby");
Run Code Online (Sandbox Code Playgroud)

将更改应用于所有值的常用方法是:

for (int i = 0; i < list.size(); i++) {
    list.set(i, function( list.get(i) );
}
Run Code Online (Sandbox Code Playgroud)

lambdas和Java 8是否提供:

  • 一种更容易,更有表现力的方式?
  • 一种方法来做到这一点,而无需设置for(..)循环的所有脚手架?

Stu*_*rks 32

    List<String> list = Arrays.asList("Bob", "Steve", "Jim", "Arbby");
    list.replaceAll(String::toUpperCase);
Run Code Online (Sandbox Code Playgroud)