我有以下课程:
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));
任何想法!
答案 0 :(得分: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
子类正在引用它。