У меня есть коллекция (как hashmap) of the Doctors, в общий класс больницы..collect (Collectors.toList()) и потоки по Java-методу
Map<Integer, Doctor> doctors = new HashMap<Integer, Doctor>();
Для каждого врача у меня есть некоторая информация, например, в коде класса (фокус на пациентах):
public class Doctor extends Person {
private int id;
private String specialization;
private List<Person> patients = new LinkedList<Person>();
Моя цель состоит в том, чтобы написать эту функцию, возвращение занятых врачей: врачей, который имеет число пациентов больше среднего.
/**
* returns the collection of doctors that has a number of patients larger than the average.
*/
Collection<Doctor> busyDoctors(){
Collection<Doctor> doctorsWithManyPatients =
doctors.values().stream()
.map(doctor -> doctor.getPatients())
.filter(patientsList -> { return patientsList.size() >= AvgPatientsPerDoctor; })
.collect(Collectors.toList());
return null;
}
Я хочу использовать потоки, как указано выше, для выполнения этой операции. Проблема заключается в методе collect
, поскольку в этой точке использования doctorsWithManyPatients
имеет тип List<Collection<Person>>
, а не Collection<Doctor>
. Как я мог это сделать?
Предположим, что AvgPatientsPerDoctor
уже определен где-то.
Вы правы. Я понял. Спасибо за ответ. Есть способ в конечном итоге преобразовать его в Stream, как вы упомянули? На самом деле это не совсем, а просто знать. –
@GiuseppeCanto, если у вас есть конструктор (или метод - назовите его как «создатель»), который получает «List» и создает новый объект типа «Doctor» –
Andrew
@GiuseppeCanto, тогда вы можете написать «map (this: : creator) 'или' map (list -> this.creator (list)) ' – Andrew