Rag*_*air 9 java collections arraylist java-8
如果值为null,是否有任何简单的方法可以替换List或Collection中的值?
我们总是可以做list.stream().filter(Objects::nonNull);,也许可以将0添加回列表.
但我正在寻找的是像API一样的API list.replaceIf(Predicate<>).
Stu*_*rks 21
这只适用于a List而不是a Collection,因为后者没有替换或设置元素的概念.
但是给定a List,使用该List.replaceAll()方法做你想做的事很容易:
List<String> list = Arrays.asList("a", "b", null, "c", "d", null);
list.replaceAll(s -> s == null ? "x" : s);
System.out.println(list);
Run Code Online (Sandbox Code Playgroud)
输出:
[a, b, x, c, d, x]
Run Code Online (Sandbox Code Playgroud)
如果你想要一个带谓词的变体,你可以编写一个小帮助函数来做到这一点:
static <T> void replaceIf(List<T> list, Predicate<? super T> pred, UnaryOperator<T> op) {
list.replaceAll(t -> pred.test(t) ? op.apply(t) : t);
}
Run Code Online (Sandbox Code Playgroud)
这将被调用如下:
replaceIf(list, Objects::isNull, s -> "x");
Run Code Online (Sandbox Code Playgroud)
给出相同的结果.
| 归档时间: |
|
| 查看次数: |
6494 次 |
| 最近记录: |