I want to start from a collection of diploma projects and by using stream I want to get an arrayList of diploma project titles, from the students that have taken a course identified by courseId. They will also need to have passed the course with grade of 2 or higher.
I have this DiplomaProject class:
public class DiplomaProject{
    String title;
    ArrayList<Student> authors
}
Each diplomaProject can have multiple authors.
I have this Course class:
public class Course{
    String courseName;
    String courseId;
}
This Student class:
public class Student{
    String name;
    HashMap<Course, Integer> courseList;
    DiplomaProject diplomaProject;
}
The grade of the course is the Integer value of courseList.
This is my current solution, but I know it does not do what I want. I can't find a way to filter based on the value of the courseList, and I do not know how I can get the the diplomaProject titles at the end of the streams (only at the top level).
public static List<String> diplomaProjectTitle(List<DiplomaProject> diplomaProjects) {
        return diplomaProjects.stream()
                .map(diplomaProject -> diplomaProject.authors)
                .flatMap(students -> students.stream())
                .filter(student -> student.courseList.keySet().equals("math1001"))
                .flatMap(student -> student.courseList.keySet().stream())
                .map(student -> student.courseName)
                .collect(Collectors.toList());
 
     
     
    