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)
请帮忙.谢谢.
如果您使用的是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中的某些内容!
| 归档时间: |
|
| 查看次数: |
5464 次 |
| 最近记录: |