我刚刚开始在此Oracle网站上查看流。立即查看下面的代码时,我想到的一个问题是:如果我想重用过滤器逻辑,例如在Person中使用方法“ isAdult”,该怎么办?
由于它不接受参数Person,因此不能在流中用作方法引用。类似地,我将无法创建一个过滤器,该过滤器可以接受带有年龄的附加int参数,以创建可设置参数的“ isOlderThan”逻辑。
我找不到将流与自定义功能接口结合使用的方法。您将如何模拟这种行为?在我看来,在上述情况下创建静态“ 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());
如果我想重用过滤器逻辑,例如在Person中使用方法“ isAdult”怎么办?
List<Person> list = roster.parallelStream().filter(Person::isAdult).collect(Collectors.toList());
或者
List<Person> list = roster.parallelStream().filter(p -> p.isAdult()).collect(Collectors.toList());
我将无法创建一个过滤器,该过滤器接受带有年龄的附加int参数并创建一个参数化的“ isOlderThan”逻辑。
List<Person> list = roster.parallelStream().filter(p -> p.isOlderThan(18)).collect(Collectors.toList());
我看不到自定义功能接口与您的问题有什么关系。谓词是这里唯一需要的功能接口,而lambda和方法引用是创建谓词实例的极其简单的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句