AMG Solution

【Java Stream API 超入門】 多重リストを纏めるflatMapと重複の削除を行うdistinct

Java Stream API
feels

こんにちは。大城です。
 
本ブログでは、Java SE 8で追加されたStream APIについて、初心者向けに解説していきます。
 
前回のブログでは、絞り込みや要素の変換などを行う中間処理filtermapについて紹介しました。中間処理2回目の今回は、flatMapdistinctについて紹介していきます。

環境

OS
Windows10
Java
Java8

多重リストを纏めるときに使えるflatMap

前回紹介したmapメソッドと同様に、要素の変換を行うメソッドですが、変換後の型としてStreamを指定します。
 

実行結果

flatMapで纏めた結果、もともと二重のリストの構造をとっていたlistの内容が纏められていることがわかります。
 
15行目のラムダ式で、StringのListのlを、そのままStreamに変換しています。flatMapでは、mapと違いStreamに変換するように指定します。
 
mapでは変換後の要素をすべて集めたStreamを返しますが、flatMapではStreamに変換後に全てをつなげたStreamを返り値として返します。
 
少し複雑な例もご紹介します。

実行結果

PrefectureクラスのメンバcitiesはStringのListです。
 
44行目のl.getCities().stream()ではStreamを返すので、flatMapでそれらをすべて纏めたStreamを取得しています。

重複の削除を行うdistinct

続いてdistinctメソッドについて説明します。
例をご覧ください。

実行結果

重複登録した要素が削除されていることが確認できます。

まとめ

いかがでしたか。
flatMapは少し分かりづらいですが、多重配列を1次元の配列に纏めるのは使いやすい機能なのではないかと思います。いずれのメソッドも役立つ機会は多いと思うのでぜひ使ってみてください。
 
次回では、ソートなどの中間処理メソッドについて解説していこうと思います。
 
それでは、また。
 
 
 
《関連記事》

feels recruit

OSHIRO'S BLOG

大城の記事

大城の記事の最新情報をお届けいたします。

SAME CATEGORY BLOG

この記事と同様のカテゴリー記事

feelsでSFA・CRM
はじめました。
LOADING