StreamAPIについて調べてみた map編 その1

【前提条件】

[環境]

【概要】

今回はmapについて調べてみました。

mapはStream内のオブジェクトを別の型に変換するメソッドです。
以降のメソッドチェインでは変換した値で処理が行われます。

サンプルソース

今回はBeanのListを作って、
Beanのプロパティを集計する処理を行います。

[Bean]
public class Personal {

    public final String lastName;

    public final String firstName;

    public final int age;

    public Personal(final String lastName, final String firstName, final int age) {

        this.lastName = lastName;
        this.firstName = firstName;
        this.age = age;
    }
}

特になんともないBeanです。

[map]

Stream#map側の処理です。

    public static void main(final String[] args) {
        final List<Personal> list = new ArrayList<>();

        list.add(new Personal("山田", "太郎", 25));
        list.add(new Personal("鈴木", "一郎", 41));
        list.add(new Personal("佐藤", "花子", 43));

        list.stream().map(p -> p.age).forEach(System.out::println);
        list.stream().map(p -> p.lastName).forEach(System.out::println);
    }

mapにはFunctionインターフェイスのオブジェクトを渡します。
今回はPersonal#age、Personal#lastNameを返すようにしています。
ageはInteger、lastNameはStringとしてforEachの処理が実行されます。

[実行結果]
25
41
43
山田
鈴木
佐藤

【まとめ】

今までのサンプルではIntegerやStringなどの型のリストを扱っていましたが、
実際の処理ではBeanのリストを持つことが多いと思います。

Stream#mapを使えばBean内の特定のプロパティを
集計して処理を行うことができます。

StreamAPIを使う時はmapを使って集計することになると思います。