gpt4 book ai didi

Java过滤器,如何扩展过滤器?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:01:48 25 4
gpt4 key购买 nike

Java 流的过滤器使用 Predicate 来允许或拒绝元素通过流。

感谢 .compose.andThen 可以限制过滤器。

但是,如果我想让它根据某些标志更加宽松怎么办?

例如,我可能希望让用户参数化设置 isAppleAllowedisPearAllowed

.filter(f -> isAppleAllowed || isPearAllowed) 的使用不起作用,因为如果其中一个为 True,则两者都被允许。

我可以使用什么来更宽松地扩展过滤器?

在此先感谢您的帮助。

最佳答案

你的例子没有意义。如果isAppleAllowedisPearAllowedboolean参数,正如它们的名称和您的散文似乎表明的那样,那么无论是单独的参数还是两者的任何 boolean 组合都不会构成可用于应用它们描述的过滤的谓词。相反,你会想要一些类似的东西

fruitStream.filter(f -> { return f.isApple() && isAppleAllowed; })

过滤苹果,类似的过滤梨。要联合过滤,您可以使用

fruitStream.filter(f -> {
return (f.isApple() && isAppleAllowed)
|| (f.isPear() && isPearAllowed);
})

或者,给定两个 Predicate<Fruit>对象,说 applePredicatepearPredicate , 类 Predicate提供形成联合谓词的方法:

fruitStream.filter(applePredicate.or(pearPredicate))

关于Java过滤器,如何扩展过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49836735/

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