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());

```