Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有相似数据的筛选器ArrayList_Java_Collections_Guava - Fatal编程技术网

Java 具有相似数据的筛选器ArrayList

Java 具有相似数据的筛选器ArrayList,java,collections,guava,Java,Collections,Guava,我有以下课程: public class School{ List<ClassRoom> classRooms; } public class ClassRoom{ List<Student> students; } public class Student{ String name; long typeId; } 公立学校{ 列出教室名单; } 公共课堂{ 列出学生名单; } 公立班学生{ 字符串名; 长型ID; } 我需要让所有学生都在typeID=123的指

我有以下课程:

public class School{
List<ClassRoom> classRooms;
}

public class ClassRoom{
List<Student> students;
}

public class Student{
String name;
long typeId;
}
公立学校{
列出教室名单;
}
公共课堂{
列出学生名单;
}
公立班学生{
字符串名;
长型ID;
}
我需要让所有学生都在typeID=123的指定教室内

预期结果:

List filteredStudent=classRoomList.filterByStudentTypeID(typeIdToSearchFor)

我不需要写一些肮脏的代码和循环

我需要利用现有的图书馆。 我发现谷歌番石榴

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

Collection<Student> filtered =Collections2.filter(students, Predicates.equalTo(s1));
Collection filtered=Collections2.filter(学生、谓词、等式(s1));

任何想法

因为您使用的是番石榴,所以可以使用自定义谓词:

final long typeIdToSearchFor = ...;
Collection<Student> filtered = Collections2.filter(students,
    new Predicate<Student>() {
        @Override
        public boolean apply(Student s) {
            return s.typeId == typeIdToSearchFor;
        }
    }
);
final long typeIdToSearchFor=。。。;
集合筛选=集合2.筛选(学生,
新谓词(){
@凌驾
公共布尔应用(学生s){
返回s.typeId==typeIdToSearchFor;
}
}
);

请注意,
typeidtosearch for
在调用
filter
的范围内必须是
final
,因为它被(匿名)
谓词
子类引用。

我不需要编写一些脏代码和循环
。。。哇!也许你需要让自己适应不同的学科。您是否考虑过电话卫生问题?编写您自己的
谓词
实现,并在调用
过滤器
时使用它。感谢Ted Hopp提供的帮助。也就是说,值得与“脏”循环并排查看,并比较哪一个更具可读性。@LouisWasserman-Amen。当然,如果OP发现某种可重用的谓词实现很有用,那么这可能有利于这种方法。不过,对于一次性需求,我会选择循环。