在java.util.List中找到符合特定条件的对象的最简洁方法?

时间:2008-10-22 15:27:28

标签: java list

我可以给自己编写一个帮助类,当给出一个仿函数时,它会这样做,但我想知道是否有更好的方法,或者标准库中是否已经存在某些东西(似乎应该有)。

我在StackOverflow上找到的答案都是针对C#的,这对我没有帮助。

由于

6 个答案:

答案 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提供了这种辅助方法,比公共集合更干净。