gpt4 book ai didi

java - 使用具有自定义功能接口(interface)的流

转载 作者:行者123 更新时间:2023-11-29 03:09:08 25 4
gpt4 key购买 nike

我刚刚开始查看 this Oracle website 上的流.看到下面这样的代码,我立即想到的一个问题是:如果我想重用过滤器逻辑怎么办,例如在 Person 中有方法“isAdult”?

这在流中不能用作方法引用,因为它不接受参数 Person。类似地,我将无法创建一个接受年龄的附加 int 参数的过滤器来创建可参数化的“isOlderThan”逻辑。

我找不到将流与自定义功能接口(interface)结合使用的方法。你会如何模拟这种行为?在我看来,在上述场景中创建静态“isAdult”方法并不是一个非常干净的解决方案,使用此类方法创建“PersonChecker”对象也不是。

List<Person> list = roster.parallelStream().filter((p) -> p.getAge() > 18).collect(Collectors.toList()); 

谢谢

最佳答案

List<Person> list = roster.parallelStream().filter((p) -> p.getAge() > 18).collect(Collectors.toList());

what if I want to reuse the filter logic, e.g. having a method "isAdult" in Person?

List<Person> list = roster.parallelStream().filter(Person::isAdult).collect(Collectors.toList());

List<Person> list = roster.parallelStream().filter(p -> p.isAdult()).collect(Collectors.toList());

I would not be able to create a filter which accepts and additional int parameter with an age to create a parameterisable "isOlderThan" logic.

List<Person> list = roster.parallelStream().filter(p -> p.isOlderThan(18)).collect(Collectors.toList());

我看不出自定义功能接口(interface)与您的问题有什么关系。 Predicate 是您在这里唯一需要的功能接口(interface),lambda 和方法引用是创建 Predicate 实例的极其简单的方法。

关于java - 使用具有自定义功能接口(interface)的流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30412509/

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