12月10日(木)1、2コマ目

今日、やったこと

ストリームAPI(中間操作、終端操作)

今日のホワイトボード

(おさらい)ストリームAPIのイメージ

ストリームに対して、中間操作(フィルタリング、データ加工、ソート)を行い、最後に終端操作でほしいデータだけ取り出す(最大値や最小値)、ほしいデータへ変更(リストへ)する。

図 ストリームAPIのイメージ


[中間操作]map():データの加工

ストリーム中の各データを加工します。

例えば、「Employeeクラスのインスタンスから氏名だけを取り出す」等。

図 [中間操作]map()


[中間操作]sorted():ソート

ソートです。

ストリームの各要素のソートを行います。

引数で渡されたComparatorの戻り値が正の場合、2つの要素を入れ替えます。

図 [中間操作]sorted()

練習問題

練習1

部署がADMINかDEVELOPな人をIDの昇順で出力。
ただし、出力フォーマットは以下のとおり。
[ID]氏名(部署)サラリー

練習2

サラリートップ3をサラリーの降順で出力。
ただし、出力フォーマットは以下のとおり。
氏名(部署)サラリー。

終端操作

ストリームの各データをリストにまとめたり、最大値や最小値を取得したりとストリームからほしいデータだけを取り出したり、別の形へ変更します。
図 終端操作(左側)

Optional<T>型

終端操作のmax()やmin()の戻り値はOptional<T>型です。
Optional<T>型はT型のインスタンスをラップしており、get()メソッドで取り出すことができます。
もし、ラップしているT型のインスタンスがない(null)の場合、get()メソッドはNoSuchElementExceptionをスローします。よって、nullチェックをする必要がありません。
図 Optional<T>型(右側)
ストリームAPIのように、複数の処理を連結して一気に書く場合、途中でnullチェックはできません。Optional<T>はストリームAPIのように一気に連続して書くためには必須です。








コメント

このブログの人気の投稿

10月20日(火)1、2コマ目

10月15日(木)1、2コマ目

12月24日(木)1、2コマ目