【发布时间】:2013-04-22 12:47:58
【问题描述】:
我有以下课程:
public class School{
List<ClassRoom> classRooms;
}
public class ClassRoom{
List<Student> students;
}
public class Student{
String name;
List<Long> typeIdList;
}
我只需要得到typeId,这是给定教室S内所有学生的共同因素。
为了能够让 typeID=123 的给定教室 S 中的所有学生,我执行以下操作:
final long typeIdToSearchFor = ...;
Collection<Student> filtered = Collections2.filter(students,
new Predicate<Student>() {
@Override
public boolean apply(Student s) {
return s.typeId == typeIdToSearchFor;
}
}
);
只是想知道 Guava 是否可以处理这样的事情? 我所说的交集是指在所有情况下都必须考虑这种类型。
我知道for 循环更具可读性,但我只是发现了 Guava 功能。
【问题讨论】:
-
我对你的要求有点困惑。您是否要检查集合中的所有学生是否具有相同的
typeId?一个特定的typeId?您所拥有的已经是一个 Guava 解决方案,用于获取具有指定typeId的所有Students。 -
这是什么
Predicate?番石榴还是 Apache Commons? -
@Mark:我只需要获取所有学生通用的typID
-
@Echo:当每个学生只能有一个
typeId时,我不明白两个不同的typeIds 对所有学生来说是如何通用的。这没有意义。 -
@Echo 我必须同意马克的观点。你能提供一个你想要实现的例子吗?
标签: java collections guava