今日のjavaおっかけ(20150427):Stream API 1

stream API

目次とぶっつぶつテーマ

http://snoopopo.hatenablog.com/entry/2015/04/14/102732

今日のテーマ:Stream API 1

・関数型インタフェースの実装の記述の簡素化

ラムダ式を使ったJava8での新機能(streamAPIとか?)

( http://snoopopo.hatenablog.com/entry/2015/04/17/115424 )

前回でラムダの基本的な書き方を知ったので、ラムダの文法が出てくるstreamAPIをみてくことにする.

Stream API の基本的な使い方

基本と紹介されていた書き方が以下のようなもの.

   //基本の使い方
    List<String> names = Arrays.asList("hoge hoge", "poyo poyo", "popopopopo.");
        names.forEach(name -> System.out.println(name));

意味がまるでわからないのでもうちょっと見てく.

java8では、java.util.streamというパッケージが追加された*1

↑の例は以下と同じ.

   //基本の使い方
    List<String> names = Arrays.asList("hoge hoge", "poyo poyo", "popopopopo.");
    Stream<String> st = names.stream();
    st.forEach(name -> System.out.println(name));

java.util.stream.StreamというインタフェースのメソッドforEachを使用してる.

ちなみに java.util.List のforEach は、親インタフェースであるjava.lang.Iterable からの継承で、 Iterable インタフェースに forEachメソッドがjava8で増えてるみたいだ.

default void forEach(Consumer<? super T> action)

これと、Stream インタフェースのforEachは同等のもののようだ.

まずこのdefaultってなんだろ…おそらくデフォルトメソッドというやつではないかと思う.

時間がきてしまったので、明日に続く. デフォルトメソッドをやってからstreamAPIに戻ってくる.