私はDoctorsのコレクション(ハッシュマップとして)をジェネリックHospitalクラスに持っています。.collect(Collectors.toList())とJavaのストリーム
public class Doctor extends Person {
private int id;
private String specialization;
private List<Person> patients = new LinkedList<Person>();
私の目的は忙しい医師を返すこの関数を記述することです:私は、このようなクラスコード(患者に焦点)のようないくつかの情報を持っているそれぞれの医師について
Map<Integer, Doctor> doctors = new HashMap<Integer, Doctor>();
Aは医師平均よりも大きい患者の数。
この操作を実行するために上記のストリームを使用します。問題はcollect
メソッドにあります。その使用時点でdoctorsWithManyPatients
はList<Collection<Person>>
であり、Collection<Doctor>
ではないためです。どうすればいい?
すでにAvgPatientsPerDoctor
がどこかで定義されているとします。 、あなたのケースのために
doctors
.values()
.stream()
.filter(d -> d.getPatients().size() >= AvgPatientsPerDoctor)
.collect(Collectors.toList());
map(doctor -> doctor.getPatients())
戻りStream<List<Person>>
を、あなたは再びfilter
ING後と呼び出す前Stream<Doctor>
に変換する必要があります
です。私は理解した。回答いただきありがとうございます。あなたが言及したように最終的にストリームにそれを変換する方法はありますか?それは本当にnedeedではなく、ただ知っている。 –
@GiuseppeCanto、 'List'を受け取り、 'Doctor'タイプの新しいオブジェクトを作成するコンストラクタ(またはメソッド名' creator')があれば、 –
Andrew
@GiuseppeCanto、 'map(this: :creator) 'または' map(リスト - > this.creator(リスト)) ' – Andrew