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

今日、やったこと

ストリームAPI(特に終端操作)

今日のホワイトボード

ラムダ式で使える変数

引数やローカル変数(ラムダ式が長くなるため使いたくない)は当然OKですが、ラムダ式の外で宣言された変数も実質finalならアクセス可能です。

図 ラムダ式からラムダ式の外で宣言した変数にアクセス


中間操作のfilter()で複数条件のorを行いたい

filter()の引数はPredicate<T>です。このPredicate<T>にはor(Predicate<T>)メソッドがあります。or()メソッドは2つのPredicateインスタンスのorを行うPredicateのインスタンスを返します。

図 filter()で複数条件のorを使う

例 地域名が中国 か 四国

[or()を使わない]

PrefectureDAO.findAll()

.stream()

.filter( p->p.getArea().equals("中国") || p.getArea().equals("四国") )

・・

[or()を使う]

// まずは中国地方で検索用Predicate生成

Predicate<Prefecture> pred = p->p.getArea().equals("中国");

// or()メソッドで 中国地方検索用Predicate || 九州地方検索用Predicate生成

pred = pred.or(p->p.getArea().equals("九州"));

PrefectureDAO.findAll()

.stream()

.filter( pred )

・・

終端操作collect()

終端操作のなかでももっともオールマイティ。そのため、引数のCollectorを一から生成するのは複雑すぎてめんどくさい。

そこで、Collectorsクラス。このクラスには使いそうなcollectorを生成するメソッドがいろいろと用意されている。

図 終端操作collect()とその引数

Collectors.groupingBy()

ストリームを引数で指定した項目に注目してグループ化。

戻り値はMap。キーはグループ化のさいに注目した値。要素はList。

図 Collectors.groupingBy()


今日の課題

一応正解例をあげときます。

前回から続く「ストリームAPI 演習その1」の正解例です。

今日配布した「ストリームAPI 演習その2」の正解例です。


次回は

2回分(4コマ)で評価用課題をやってもらいます。


コメント

このブログの人気の投稿

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

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

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