按成员过滤对象

时间:2015-05-17 22:18:23

标签: guava

我正在尝试过滤Guava中的对象。例如,我有一个班级团队,并希望让所有团队的职位低于5。

container_two

我遇到2个错误,谓词无法解析为类型,Iterables类型中的方法过滤器(Iterable,Predicate)不适用于参数(List<'Team'>,new Predicate<'队'>(){})

我能够过滤Integer类型的Iterables。

    Iterable<Team> test = Iterables.filter(teams, new Predicate<Team>(){  
        public boolean apply(Team p) {  
            return p.getPosition() <= 5;  
        }  
    });  

如何根据Guava中的成员过滤对象?我想在我的android项目中使用这个库,并有许多过滤条件。它可以用于类对象还是仅用于简单的数据类型?

1 个答案:

答案 0 :(得分:0)

在此示例中,您需要final变量,例如range

这是使用外部参数进行过滤的方法,Predicate是一个内部类。

final Range range = new IntRange(0, 3);

Iterable<Team> test = Iterables.filter(teams, new Predicate<Team>() {
    public boolean apply(Team p) {
        return range.containsInteger(p.getPosition());
    }
});