gpt4 book ai didi

java - 如何否定 lambda 谓词?

转载 作者:IT老高 更新时间:2023-10-28 21:15:08 24 4
gpt4 key购买 nike

假设我有一个字符串流。

final Stream<String> stream = ...;

我想在修剪后过滤掉每个空字符串。

stream
.filter(Objects::nonNull)
.map(String::trim)
.filter(v -> !v.isEmpty());

有什么方法可以申请Predicate#negate()用于替换 v -> !v.isEmpty() 部分?

.filter(((Predicate) String::isEmpty).negate()) // not compile

最佳答案

你必须这样做 .filter(((Predicate<String>) String::isEmpty).negate())

如果你愿意,你可以定义

static<T> Predicate<T> not(Predicate<T> p) {
return t -> !p.test(t);
}

然后

.filter(not(String::isEmpty))

但我会坚持使用 v -> !v.isEmpty()

关于java - 如何否定 lambda 谓词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28235764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com