我可以给自己编写一个帮助类,当给出一个仿函数时,它会这样做,但我想知道是否有更好的方法,或者标准库中是否已经存在某些东西(似乎应该有)。
我在StackOverflow上找到的答案都是针对C#的,这对我没有帮助。
由于
答案 0 :(得分:5)
不 - 没有。 Apache commons-collections
有这种事情的谓词,但结果代码(使用匿名内部类)通常是丑陋的,并且很难调试。
只需使用基本的 for循环,直到他们将closures带入语言
答案 1 :(得分:3)
通过使用lambdaj库,您可以找到最佳信誉用户,如下所示:
List<User> topUsers =
select(users, having(on(User.class).getReputation(), greaterThan(20000)));
它对Quaere库有一些优势,因为它不使用任何魔术字符串,它完全是类型安全的,在我看来它提供了更易读的DSL。
答案 2 :(得分:3)
Querydsl也通过其Collections模块提供此功能。我有偏见,因为我是模块的维护者,但我相信考虑到Java 6的限制,这是一个选项。
使用Java 7会有闭包,可以通过闭包进行过滤,这样就不需要使用外部库了。
答案 3 :(得分:2)
有JXPath。
答案 4 :(得分:1)
您可以尝试Quaere。我没有使用它,但它看起来很有趣。
答案 5 :(得分:1)
Google Collection Library提供了这种辅助方法,比公共集合更干净。