一尘不染

可以使用lambda就地更改列表的值(而无需创建新列表)吗?

algorithm

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

我正在尝试确定List在即将发布的 Java 8 版本中使用新的lambdas功能更改a中所有值的正确方法,而无需创建**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");

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

for (int i = 0; i < list.size(); i++) {
    list.set(i, function( list.get(i) );
}

lambda和Java 8是否提供:

  • 一个更容易表达的方式?
  • 一种无需设置for(..)环路的所有脚手架的方法?

阅读 283

收藏
2020-07-28

共1个答案

一尘不染

List list = Arrays.asList(“Bob”, “Steve”, “Jim”, “Arbby”);
list.replaceAll(String::toUpperCase);

2020-07-28