そのようなラムダ式、関数とそれを置くために、ストリームプログラミングの流れ、これらの新機能の使用などの新機能、のJDK8ロットは、使用後に、そのようなセットリストとマップオブジェクトによってストリームに直接変換することができます。
構文:
地図マップ= list.stream.stream()コレクト(Collectors.toMap(リスト::コレクションのプロパティでオブジェクトを取得し、リストがエイリアスである - >リスト)の別名です)。
例:
地図<整数、EmployeeTeacherCertificate> employeeTeacherCertificateMap = employeeTeacherCertificates.stream()コレクト(Collectors.toMap(EmployeeTeacherCertificate :: getEmployeeId、cert-> CERT));
説明:
employeeTeacherCertificatesリストコレクションオブジェクト
EmployeeTeacherCertificate:リストオブジェクトのコレクションです
それは非常に簡単ではありません。
例えば、二重にリストをEMPIDしかし、もし、それがエラーになります。次のとおりです。
エラーメッセージと言って、社員=値4429は、コレクションに反復されます。
この時間は、どのようにそれを解決するには?
私たちは、オーバーロードの別の方法のtoMapを使用することができます。と重量の方法。
構文:
Collectors.toMap(keyMapper、valueMapper、mergeFunction)
出典:
パラメータ:
最初の2つのパラメータは、第三パラメータが鍵の複製、以下の説明ノートの処理方法で得られたキーと値の属性値が、前と同じです。
簡単に言えば:
解決の競合に、機能をマージすると、{@link地図#マージ(オブジェクト、オブジェクト、BiFunction)}にその間関連同じキー値を提供します。
合成関数は、2つのパラメータ、現在の反復の前にキーに対応する第1のパラメータ値、データ電流の電流値に対する第2の繰り返しキーを有しています。
図1に示すように、前回値を用いて繰り返したときに値バックカバー
また、それは次のように省略することができます。
地図<文字列、文字列>マップ= list.stream()。コレクト(
Collectors.toMap(学生:: getClassNameメソッド、学生:: getStudentName、
(KEY1、KEY2) - > KEY2))。
また、それは次のように省略することができます。
地図<文字列、文字列>マップ= list.stream()。コレクト(
Collectors.toMap(学生:: getClassNameメソッド、学生:: getStudentName、
(値1、値2) - > {
戻り値2;
}))。
カイコーは、ここに2番目のオプションを使用します。
第2のシンプルで理解しやすいです。
最後に、それを要約します。
要約:
これらの措置は、toMapオーバーロード第三引数に基づいて実装されています!最適な方法として、私たちは、特定の事業に依存すべきだと思います!
為替と一緒に学ぶことを歓迎します。カイコーのJava