以递归方式将字符串附加到java中的List of String

Sar*_*ara 2 java list arraylist

我有一个String列表,我想在列表中的每个String前面附加文本.我试图在没有for/Iterator循环的情况下实现这一点,就像单行代码一样.我无法找到解决方案.

以下我尝试了一个for循环,但没有这个需要解决方案.有解决方案吗?

   List<String> strings = new ArrayList<String>();
                strings.add("a");
                strings.add("b");
                strings.add("c");
            strings.add("d");

List<String> appendedList = new ArrayList<String>();
for (String s : strings) {
    appendedList.add("D" + s);
}
Run Code Online (Sandbox Code Playgroud)

请帮忙.谢谢.

Dao*_*Wen 6

如果您使用的是Java 8,则可以使用新添加的replaceAll方法执行此操作:

strings.replaceAll(s -> "D"+s);
Run Code Online (Sandbox Code Playgroud)

这是一个完整的工作示例:

import java.util.Arrays;
import java.util.List;

public class StringTest {
  public static void main(String[] args) {
    List<String> strings = Arrays.asList("a", "b", "c", "d");
    strings.replaceAll(s -> "D"+s);
    System.out.println(strings);
  }
}
Run Code Online (Sandbox Code Playgroud)

您也可以使用新的Streams API执行此操作,但稍微更冗长,制作列表的副本而不是更改(更新)原始列表:

List<String> strings = Arrays.asList("a", "b", "c", "d");
strings = strings.stream()
                 .map(s -> "D"+s) // Using Lambda notation to update the entries
                 .collect(Collectors.toList());
System.out.println(strings);
Run Code Online (Sandbox Code Playgroud)

请注意,我曾经Arrays.asList()更简洁地创建列表.这不是Java 8中的新功能,因此您也应该能够在Java 5/6/7中使用它.这是我的输出:

$ java StringTest
[Da, Db, Dc, Dd]
Run Code Online (Sandbox Code Playgroud)

即使您现在不使用Java 8,仍然可以注意到这些功能已添加,如果您在一两年内遇到类似问题,那么您可以使用新API中的某些内容!