有没有什么简单的方法可以替换 a 中的值列表或集合如果该值为空?
我们总能做到list.stream().filter(Objects::nonNull);
也许可以将 0 添加回列表中。
但我正在寻找的是一个像这样的APIlist.replaceIf(Predicate<>)
.
这仅适用于List
,不在Collection
,因为后者没有替换或设置元素的概念。
但给定一个List
,使用以下命令很容易做你想做的事情List.replaceAll()
method:
List<String> list = Arrays.asList("a", "b", null, "c", "d", null);
list.replaceAll(s -> s == null ? "x" : s);
System.out.println(list);
Output:
[a, b, x, c, d, x]
如果您想要一个带有谓词的变体,您可以编写一个小辅助函数来做到这一点:
static <T> void replaceIf(List<T> list, Predicate<? super T> pred, UnaryOperator<T> op) {
list.replaceAll(t -> pred.test(t) ? op.apply(t) : t);
}
这将被调用如下:
replaceIf(list, Objects::isNull, s -> "x");
给出相同的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)