comparar y luego Comparar da error de compilación
Estoy tratando de ordenarList
de empleados por nombre y edad usando Java8Comparator
, He creado a continuaciónComparator
pero me da un error de compilación
Type mismatch: cannot convert from Comparator<Object> to <unknown>
Comparator<String> c = Comparator.comparing(s -> s.split("\\s+")[0])
.thenComparingInt(s -> Integer.parseInt(s.split("\\s+")[1])); //compile error
pero funciona si especifico explícitamente el tipo
Comparator<String> c = Comparator.<String, String> comparing(s -> s.split("\\s+")[0])
.thenComparingInt(s -> Integer.parseInt(s.split("\\s+")[1])); //works
o creando dosCompartor
sy cadena
Comparator<String> name = Comparator.comparing(s -> s.split("\\s+")[0]);
Comparator<String> age = Comparator.comparingInt(s -> Integer.parseInt(s.split("\\s+")[1]));
Comparator<String> cc = name.thenComparing(age); //works
He especificado el tipoComparator<String>
en el lado izquierdo, pero por qué la inferencia de tipo automático no encuentra el tipo correcto y espera especificarlo explícitamente.
¿Podría alguien aclarar sobre esto?
Aqui esta el codigo
String[] arr = { "alan 25", "mario 30", "alan 19", "mario 25" };
Comparator<String> c = Comparator.<String, String> comparing(s -> s.split("\\s+")[0])
.thenComparingInt(s -> Integer.parseInt(s.split("\\s+")[1]));
List<String> sorted = Arrays.stream(arr).sorted(c).collect(Collectors.toList());
System.out.println(sorted);
salida
[alan 19, alan 25, mario 25, mario 30]