使用谓词过滤

时间:2014-11-15 20:43:35

标签: java

我之前使用过谓词来过滤集合,如下所示:

package com.byhiras.predicate;

import com.byhiras.domain.Bid;
import com.byhiras.domain.User;
import com.google.common.base.Predicate;

/**
 * List of predicates pertinent to User
 */

public class UserPredicate {

    /**
     * Is a bid made by a particular user?
     *
     * @param usr
     * @return
     */
    public static Predicate<Bid> isBidByUser(User usr) {
        return p -> p.getUser().getName().equals(usr.getName());
    }
}

对于上面我使用的是Java 8和最新的Guava库。但是我正在进行一项任务,我只限制于Java 6和Guava的13.0.1版本,没有机会让他们更新他们的maven回购。

我很难在Java 6中完成类似的谓词类型,因为不允许使用lambda表达式。

感谢您将此代码移植到Java 6的任何帮助。谢谢

1 个答案:

答案 0 :(得分:3)

典型的,Java-8之前的处理方式看起来像

public static Predicate<Bid> isBidByUser(final User usr) {
    return new Predicate<Bid>() {
      @Override public boolean apply(Bid p) {
        return p.getUser().getName().equals(usr.getName());
      }
    };
}