java - 是否可以使用 lambda 就地更改列表的值(无需创建新列表)?

标签 java algorithm collections lambda java-8

我正在尝试确定使用即将发布的 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/

相关文章:

scala - Scala 是否智能地终止计算折叠操作的 OR 表达式?

java - Java 的 RSA 算法库

java - 在每次请求时刷新 session 中存储的用户帐户对象的最佳方法

algorithm - 监督机器学习,产生训练有素的估计器

c++ - 为什么该程序无法按排序顺序合并2个链表?

c# - 创建 2 个字符数组的所有单词变体

java - 比较两个映射的值以进行完全匹配和部分匹配

java.lang.UnsupportedOperationException 在 javax.faces.context.FacesContext.isReleased(FacesContext.java :609)

java - Android使用自定义模型

java - 检测数组中的非空引用