【问题标题】:how to change items in a list of string in java8如何在java8中更改字符串列表中的项目
【发布时间】:2014-05-10 13:36:44
【问题描述】:

我想更改list中的所有项目。
使用java8 的正确方法是什么?

public class TestIt {

public static void main(String[] args) {
    ArrayList<String> l = new ArrayList<>();
    l.add("AB");
    l.add("A");
    l.add("AA");
    l.forEach(x -> x = "b" + x);
    System.out.println(l);
}

}

【问题讨论】:

  • 请记住,在 Java 7 中有效的所有内容在 Java 8 中也有效。因此有多种正确的方法。

标签: java list java-8


【解决方案1】:

您可以使用replaceAll

将此列表的每个元素替换为应用 该元素的运算符。

ArrayList<String> l = new ArrayList<>(Arrays.asList("AB","A","AA"));
l.replaceAll(x -> "b" + x);
System.out.println(l);

输出:

[bAB, bA, bAA]

【讨论】:

  • 谢谢@Alexis C. 的回答。
【解决方案2】:

如果你想使用流,你可以这样做:

List<String> l = new ArrayList<>(Arrays.asList("AB","A","AA"));
l = l.stream().map(x -> "b" + x).collect(Collectors.toList());
System.out.println(l);

输出:

[bAB, bA, bAA]

如果您想更改列表的所有元素,当然最好使用replaceAll,但使用流还可以轻松应用过滤器或并行化。 replaceAll 也会修改列表并在列表不可修改时抛出异常,而 collect 会创建一个新列表。

【讨论】:

  • 您能否解释一下,为什么使用 Streams 更好?或者解释一下,有什么区别?
  • 我添加了一条评论。这个想法是展示如何使用新的 Java 8 功能实现它的另一种方式。正如 immibis 在评论问题时所说,有多种正确的方法可以实现所要求的。
  • 太棒了!感谢您的进一步解释!这就是我想要实现的目标:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
  • 2015-10-05
  • 2013-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多