Например, у меня есть класс Student
Как преобразовать карту в SortedMap по лямбда-выражению в JAVA8?
public class Student{
private String name;
private int age;
public int getAge(){
return this.age;
}
}
А класс School
:
public class School{
private Map<String,Student> students=new TreeMap<>();
//stroe the index of students in the school by key is their names.
public SortedMap<Integer,Long> countingByAge(){
return this.students.entrySet().stream().map(s->s.getValue())
.collect(groupingBy((Student s)->s.getAge(),counting()));
}
}
Метод countingByAge просить возвращения в SortedMap<Integer,Long >
, ключ возраст студента, значение является количество учеников в отдельный возраст, т. е. мне нужно подсчитать, сколько учеников в возрасте.
Я почти закончил метод, но я не знаю, как преобразовать Map<Integer,Long>
в SortedMap<Integer,Long>
без (SortedMap<Integer,Long>)
литья.
, на мой взгляд, вы можете просто бросить его. Я не вижу ничего плохого в использовании этого сценария. – BufBills
@BufBills Нельзя просто бросить его. Компилятор Java генерирует предупреждение для этого, по уважительной причине. Неконтролируемое кастинг подрывает способность компилятора гарантировать правильный безопасный код, в котором используются типично типизированные объекты. – VGR
@VGR: в этом случае это не * непроверенный * литой. Это просто бросок, который не работает во время выполнения, поскольку «Карта», возвращаемая сборщиком 'grouping' по умолчанию, не является« SortedMap ». – Holger