- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个整数流,我想找到两个数字之和等于另一个数字。所以我想出了以下解决方案:
BiPredicate<Integer, Integer> p = (price1, price2) -> price1.intValue() + price2.intValue() == moneyQty;
flavoursPrices.filter(p);
但是filter方法没有接收到一个BiPredicate。为什么不?有什么替代方案?
最佳答案
您仍然可以使用 Bipredicate。 filter-method 需要的参数是一个 Predicate,下面是一个如何使用这个 BiPredicate 的例子:
BiPredicate<Integer, Integer> p = (price1, price2) -> price1.intValue() + price2.intValue() == moneyQty;
flavoursPrices.stream().filter(el->p.test(el.price1,el.price2));
在此示例中,flavoursPrices 必须是一个列表。
我们正在使用的 lambda:
el->p.test(el.price1,el.price2)
正在替换匿名内部类声明以从 BiPredicate 中创建新的 Predicate:
Predicate<Integer> arg =new Predicate<Integer>() {
@Override
public boolean test(Element el) {
return p.test(el.price1,el.price2);
}
};
因此,为了过滤流,我们为来自流的每个元素创建一个新的 Predicate,然后我们使用这个 Predicate 作为参数来使用它的测试方法。这样做的一大优势是,我们不必提前创建大量谓词,但我们可以传递 lambda 函数中的每个元素并获取它的属性。
关于Java 8 - 使用 BiPredicate 进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36020736/
在学习Java 8的类(class)时我们现在进入主题Generics和Lambda expressions 。我们被要求制作以下方法 Generic而不是String仅: public static
我已经关注了这个answer基于相同字段检查两个不同类型的列表是否相等。 这里是工作函数: private boolean compareLists(List list1, List list2,
我有以下代码: public class BiPredicateTest { public static void main(String[] args) { BiPredic
我有文件流,以及一个将两个文件作为参数的方法,如果它们具有相同的内容则返回。 我想将此文件流减少为一组(或映射)集合,将具有相同内容的所有文件分组。 我知道可以通过重构比较方法来获取一个文件,返回一个
我是 Java 工程师,需要编写从 Java 到 C# 的相同解决方案。现在我必须重写这个示例: private static final BiPredicate predicate = (s
我有一个整数流,我想找到两个数字之和等于另一个数字。所以我想出了以下解决方案: BiPredicate p = (price1, price2) -> price1.intValue() + pric
我有两个 lambda 函数(谓词): final Predicate isElement = node -> node.getNodeType() == Node.ELEMENT_NODE; fin
如果旅程时间表不重叠,则旅程列表只能由一个人完成。例如该列表应返回 true,因为日期不重叠。 Journey 1: "2019-09-10 21:00" --> "2019-09-10 21:10"
这个问题在这里已经有了答案: Difference between and in Java [duplicate] (14 个答案) 关闭 4 年前。 我不知道为什么它不起作用。 eclipse
我有一组货币为 Set和 RequiredCurrency 为 Set .我必须检查 currency set 中是否存在任何所需的货币。我写了BiPredicate对于如下所示,并尝试在 anyMa
return VAL_MAP.getOrDefault(push.type, listOf { _: Push, _: SystemState -> false}.stream().allMatch
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 5 年前。 Improve
我有两个列表。一个是我从数据库创建的,一个是从 Csv 文件创建的。现在我想在包含数据库和 csv 文件的列表中收集记录。我写了如下代码 BiPredicate sameTrainee = (dbTr
我想在文件树中找到所有文件。在 Java 中,我会写一些类似的东西: try(Stream !attributes.isDirectory())) { paths.forEach(
我正在练习我的 Java 8 技能。我遇到了一个奇怪的(对我来说)代码。我的 bean 类 Person 具有重写的 equals 方法。然后我尝试用 equals 方法实现 BiPredicate
我是一名优秀的程序员,十分优秀!