package Testate.Stream.Studentt;


import java.util.*;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        // Prüfungen erstellen
        Prüfung prüfung1 = new Prüfung(2.3f, true);  // Grundstudium
        Prüfung prüfung2 = new Prüfung(3.7f, true);  // Grundstudium
        Prüfung prüfung3 = new Prüfung(1.7f, false); // Kein Grundstudium
        Prüfung prüfung4 = new Prüfung(4.0f, true);  // Grundstudium
        Prüfung prüfung5 = new Prüfung(2.0f, false); // Kein Grundstudium

        // Student erstellen
        Student student1 = new Student();
        student1.setpList(prüfung1);
        student1.setpList(prüfung2);
        student1.setpList(prüfung3);

        Student student2 = new Student();
        student2.setpList(prüfung4);
        student2.setpList(prüfung5);

       ArrayList<Student> st = new ArrayList<>();
       st.add(student1);
       st.add(student2);
       
       Map<Student, Double> t = 
    		   st.stream()
    		   .collect(Collectors.toMap(stu -> stu, stu -> stu.getpList().stream().mapToDouble(p -> p.getNote()).average().orElse(0.0)));
       
       double result = berechene(st);
       System.out.println(result);
    	    	
    }
    
    public static double berechene(ArrayList<Student> st ) {
    	Double result = st.stream()
    			.flatMap(p -> p.pList.stream())
    			.filter(p -> p.isIstGrundStudium())
    			.mapToDouble(p -> p.getNote())
    			.average().orElse(0.0);
    	return result;
    }
}
