こんにちは、開発担当の Masa です。

行って来ました、Java Day Tokyo 2015。

Java Day Tokyo 2015

Java Day Tokyo 2015

旅行すると毎回海外からの旅行者に道を聞かれる筆者ですが、もちろん今回も聞かれました。

メトロと JR の乗り換えがあるルートを聞かれたので、ドイツでインドから来た旅行者に道を聞かれた以来の難易度でした。
メトロ有楽町駅ホームで出会った方、無事に大森駅に着きましたか?

さて、肝心のセッションはどうだったのかというと、JavaEE 7、Nashorn、etc…
色々ありましたが「Java SE 8: Lambdas and Streams API」が良かったですね。

C# でラムダ式、LINQ を使って開発をしていたため、Java でも同じようなことができるというのは嬉しいですね。
簡単に内容を紹介します。

ラムダ式の基本について説明がありましたが、ここでは割愛します。

「Stream は パイプラインで、ソース、中間操作、終端操作で構成されているよ」とのこと。

int oldest = peoples.stream()                // ソース
  .filter(p -> p.getCity().equals("Nagoya")) // 中間操作
  .mapToInt(Peoples::getOld)                 // 中間操作
  .max();                                    // 終端操作

peoples.stream() でストリームが作成され、filter() でフィルタリング後 mapToInt() で
int 値のストリームに変換される。最後に max() で最大値が生成される。

C# で言うと、filter が where で、mapToInt が select でしょうか。
密かにメソッド参照が使われてます。

ストリームの作成には他に parallelStream 等が紹介されていました。
並列処理にするには、上記の stream() を parallelStream() に書き換えるだけ。
ただし、Fork/Join のオーバーヘッドがあるため「データ数が少ない場合はパフォーマンス良くないよ」とのこと。

後は、flatMap なんかはさらっと通り過ぎた感じですね。
どのセッションも時間が足らずに駆け足で通り過ぎるだけになってたのが残念です。

また機会があれば改めて Java8 で追加された機能について紹介します。