package fp.grados.tipos;

import java.time.LocalDate;
import java.util.Comparator;
import java.util.Optional;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class AlumnoImpl2 extends AlumnoImpl implements Alumno {
	
	public AlumnoImpl2(String DNI, String nombre, String apellidos, LocalDate fecha, String email){
		super(DNI, nombre, apellidos, fecha, email);
	}
	
	public AlumnoImpl2(String s) {
		super(s);
	}
	
	@Override
	public Integer getCurso() {
		Integer res = 0;
		Stream<Asignatura> stream = this.getAsignaturas().stream();
		Optional<Asignatura> opt = stream.max(Comparator.comparing(Asignatura::getCurso));
		if(opt.isPresent()) {
			res = opt.get().getCurso();
		}
		
		return res;
	}
	
	public SortedMap<Asignatura, Calificacion> getCalificacionPorAsignatura() {
		return this.getExpediente().getNotas().stream().collect(Collectors.toMap(Nota::getAsignatura, Nota::getCalificacion, (p1, p2) -> p1, TreeMap::new));
	}
}

@@ -76,16 +76,38 @@
 arator;%0A
+import java.util.Map;%0A
 import j
@@ -882,20 +882,44 @@
 %7B%0A%09%09
-return this.
+Map%3CAsignatura, Calificacion%3E res = 
 getE
@@ -975,22 +975,23 @@
 s.toMap(
-Nota::
+n -%3E n.
 getAsign
@@ -999,16 +999,19 @@
 tura
-, Nota::
+(), n -%3E n.
 getC
@@ -1021,16 +1021,18 @@
 ficacion
+()
 , (p1, p
@@ -1037,33 +1037,250 @@
  p2)
- 
 -%3E
- p1, TreeMap::new));%0A%09%7D
+calificacionMayor(p1, p2)));%0A%09%09return new TreeMap%3CAsignatura, Calificacion%3E(res);%0A%09%7D%0A%09%0A%09private Calificacion calificacionMayor(Calificacion c1, Calificacion c2) %7B%0A%09%09if (c1.compareTo(c2) %3E= 0) %7B%0A%09%09%09return c1;%0A%09%09%7D else %7B%0A%09%09%09return c2;%0A%09%09%7D%0A%09%7D%0A%09
 %0A%7D%0A

Fix ALL failures in Java