-1

我有以下课程:

public class School{
List<ClassRoom> classRooms;
}

public class ClassRoom{
List<Student> students;
}

public class Student{
String name;
long typeId;
}

我需要让所有学生都在 typeID=123 的给定教室里

预期结果:

列出filteredStudent=classRoomList.filterByStudentTypeID(typeIdToSearchFor)

我不需要编写一些脏代码和循环。

我需要利用现有的库。我发现了谷歌番石榴。

我在 guava 找到了一种方法,它通过整个参考进行搜索......相反,我需要使用属性 typeId 进行搜索

Collection<Student> filtered =Collections2.filter(students, Predicates.equalTo(s1));

有任何想法吗!

4

1 回答 1

2

由于您使用的是 Guava,因此您可以使用自定义谓词:

final long typeIdToSearchFor = ...;
Collection<Student> filtered = Collections2.filter(students,
    new Predicate<Student>() {
        @Override
        public boolean apply(Student s) {
            return s.typeId == typeIdToSearchFor;
        }
    }
);

请注意,它typeIdToSearchFor必须final在调用范围内,filter因为它被(匿名)Predicate子类引用。

于 2013-04-21T15:55:28.860 回答