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を使って集計することになると思います。