Java中的谓词搜索

pie*_*154 11 java arrays search rules predicates

不太确定如何说出这个问题.我想知道是否有一种方法来检查自定义java类的某些部分,看它是否符合某个标准.比如这个

public Name(String forename, String middlename, String surname)
Run Code Online (Sandbox Code Playgroud)

然后当创建该类的实例数组时,

Name[] applicants = new Name[4];

applicants[0] = new Name("john","bob", "rush");
applicants[1] = new Name("joe","bob", "rushden");
applicants[2] = new Name("jack","bob", "rushden");
applicants[3] = new Name("jake","bob", "rushden");
Run Code Online (Sandbox Code Playgroud)

是否可以搜索类的实例

midddlename.equals("bob") && surname.equals("rush")
Run Code Online (Sandbox Code Playgroud)

我并不是在寻找解决方案if(surname.equals("bob")) then else等等

但更多内置的java类允许快速搜索数组.速度非常重要.

Mik*_*ike 14

没有内置支持,但Apache CollectionsGoogle Collections都提供Predicate对集合的支持.

您可能会发现此问题及其答案有用.与此developer.com文章相同.

例如,使用Google Collections:

final Predicate<name> bobRushPredicate = new Predicate<name>() {
   public boolean apply(name n) {
      return "bob".equals(n.getMiddlename()) && "rush".equal(n.getSurname());
   }
}

final List<name> results = Iterables.filter(applicants, bobRushPredicate));
Run Code Online (Sandbox Code Playgroud)