おためし受講中

Java 8入門 -2回目(Stream API)-

2014年に Java 8がリリースされました。Java 8の主要な追加機能は以下の通りです。

  • 関数を扱うラムダ式文法の追加
  • 要素の集合を扱う Stream APIの追加
  • インターフェースへの defaultメソッドの追加
  • 新しい日付API、Date and Time APIの追加
  • 並列処理API、 completableFutureの追加

 

今回の授業では、上記のうちJavaのプログラムの書き方に大きく影響するラムダ式とStream APIについて2回に分けて学習します。

ラムダ式と Stream APIを使うことで、従来より短く簡単にプログラムを書けるようになります。

2回目はStream APIについて学習します。
Stream API は、配列・コレクション・ファイルなどの要素の集合に対する操作を汎用的に扱うAPIです。

クラスやメソッドの作成、コレクションの操作ができるなど、Javaについてある程度理解している方を対象にしています。授業で使用するソースコードは公開しますので、授業中にご自身のPCでソースを実際に実行いただけます。eclipse、NetBeans、IDEAなど好みの開発環境を用意することを推奨します。

■ この授業で学べること

  • Stream APIの概要
  • 生成・中間操作・終端操作の概要
  • 代表的な中間操作・終端操作の解説
  • Stream APIによるプログラムのデモ

 

<サンプルファイルについて>
今回の授業で使用するソースコード(Github) 適宜参照していただくか、zipでダウンロードしてローカルで実行してみてください。

▼取り込み方
1. zipファイル形式でダウンロードし、適当なフォルダに解凍します。
2. eclipseの場合、プロジェクトのインポートかmaven形式プロジェクトのインポートで上記のフォルダをeclipseにインポートします。
3. Idea, NetBeansの場合、"プロジェクトを開く"から、1で展開したフォルダまたはフォルダの中のpom.xmlを選択します。

参考サイト/予習教材

学生代表

  • 青島 莉子

    青島 莉子

    スクー放送部

【ノート機能】
授業内容や覚えておきたいポイントなど、ノートに自由に残せます

再生位置挿入 資料挿入
筆記アシスト
ONOFF
    【チャプター機能】
    授業内容をピンポイントでおさえながら
    ご自身のペースで進めることができます
    【前半】授業
    自己紹介
    01:18  (00:14 ~ )
    授業の目的
    00:36  (01:32 ~ )
    Stream API の概要
    02:42  (02:08 ~ )
    Stream APIの例1-要素の判定
    05:21  (04:50 ~ )
    手続き型の例1-要素の判定
    00:47  (10:11 ~ )
    Stream APIの例2-抽出と加工
    05:51  (10:58 ~ )
    手続き型の例2-抽出と加工
    00:16  (16:49 ~ )
    Stream APIの利点
    01:40  (17:05 ~ )
    生成・中間操作・終端操作の概要
    01:36  (18:45 ~ )
    Stream APIはStreamオブジェクトの生成から開始
    02:01  (20:21 ~ )
    様々な集合を、Streamオブジェクトに変換できる
    01:09  (22:22 ~ )
    中間操作でStreamに処理を設定する
    01:25  (23:31 ~ )
    filterはラムダ式に合致する要素を抽出する
    00:42  (24:56 ~ )
    mapはデータの加工・型変換を行う
    01:09  (25:38 ~ )
    中間操作の連結(パイプライン)でロジックを構築する
    02:01  (26:47 ~ )
    終端操作でStreamから処理を実行し、結果を取得する
    02:12  (28:48 ~ )
    Collectメゾットで様々な結果を取得する
    07:54  (31:00 ~ )
    Stream APIの応用例
    00:17  (38:54 ~ )
    Stream APIの応用1:ファイルを扱う
    03:51  (39:11 ~ )
    Stream APIの応用2:parallelで並列処理を行う
    04:37  (43:02 ~ )
    まとめ
    01:10  (47:39 ~ )
    【後半】質疑応答
    Q:従来Iteratorパターンのような形で実装をしていた箇所をStream APIに置き換える、のようなことを今思いついたとして、それは現実的ですか?
    00:58  (49:13 ~ )
    Q:コードがメソッドチェーンでつながっているからストリーム?
    00:32  (50:11 ~ )
    Q:anyMatch は条件にヒットしたら、それ以降の要素は評価されない(ループでbreakされるイメージ)と考えてよいですか?
    00:48  (50:43 ~ )
    Q:reduce()の間違い?
    00:53  (51:31 ~ )
    Q:ストリームに対して toList() とか単純に呼びだいけど。インターフェイスを挟むのがいかにもJava的
    03:38  (52:24 ~ )
    お知らせ
      (56:02 ~ )