プログラミング Java

【Java】ListをStreamで処理する方法 7選!

投稿日:2021年5月7日 更新日:

概要

ListをStreamで処理する方法のうち、よく使う処理方法を掲載します。

前準備

プリミティブなListでStreamを利用するシーンをあまり想定できなかったので、オブジェクトのListでの事例と致します。
まずは以下のProductクラスがあると仮定します。

Productクラス

 

実装例

テストがGreeanになったコードで記載いたします。

特定の要素のみを取得する

Listの中から特定の条件に該当する要素だけを取得したい場合、filterを使います。
ここでは、カテゴリー:玩具に該当するProductオブジェクトのみを取得しています。

 

合計を算出する

Productオブジェクトのpriceを合計した結果を取得します。
通常のmapではなく、mapToIntを使うことでIntStreamを返すことができます。
IntStreamにはsumメソッドが用意されており、それにより合計を算出することができます。

 

最初の要素を取得する

Streamで最初の要素を取得する場合、findFirstを使います。
でも、Listの最初の要素を取得するには、「List.get(0)で十分ではないか?」と思われたのではないでしょうか?
その場合、もし要素が無ければIndexOutOfBoundsExceptionが発生します。
findFristの場合はOptionalを返してくれるので、orElseなどで要素が無い場合の戻り値を決めてあげることができるのがメリットです。

 

最後の要素を取得する

lastのような機能は無いので、reduceを使用して最後の要素を取得する方法があります。
reduceの演算結果として、常にCurrentの要素が返ってくるようにすることで、最後の要素が取得できます。
Listの要素が無い場合のために、orElseで戻り値を定義しておくこともできます。

 

なんらかの値に変換した値を取得する

mapを使用して、何らかの加工を施した結果を取得する方法です。
ここではオブジェクトの各フィールド値を文字列型にフォーマットして返しているだけです。
(正直これであれば、Productクラスにtextメソッドのようなものを作ってしまった方が適切ですが、mapの事例として記載させて頂きました)

 

並べ替えた結果を取得する(昇順)

price順で並び替えた結果を取得しています。
comparingメソッドの引数に、比較用のソート・キーを指定します。
そうするとComparatorを返してくれます。
そのComparatorはcompareで大小比較するので、小さい順に並んだ結果が返ってきます。

 

並べ替えた結果を取得する(降順)

昇順にreversedメソッドを付けることで降順にしています。

 

まとめ

  • 特定の要素を取得するときはfilterを使う。
  • 合計を算出する場合、mapToIntでIntStreamにしてからsumで取得する。
  • 最初の要素はfindFistを使う。
  • 最後の要素はreduceで現在の要素を常に返すことで取得する。
  • 何らかの値に変換したい場合はmapを使う。
  • 並び替えはsortedとComparatorを組み合わせる。
  • 降順はreversedを使う。

 
最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!
もし内容が良かったらランキング評価を頂けると励みになります(^^)

ランキング評価する

-プログラミング, Java
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


関連記事

【SpringBoot入門】#11~ 削除ダイアログの作成

概要 検索結果から削除機能を呼び出した際に、削除を確認するためのダイアログです。 実装はjQueryで行いますので、mavenへの追加作業等の準備を別途行います。 イメージ jQueryの準備 jQu …

ネストしたCollectionをflatmapで平坦化する例

概要 Java Goldの資格勉強をしていて、StreamのflatmapというメソッドでCollection等を平坦化(ネストした配列等を同階層の要素としてまとめること)の挙動で、3階層以上のネスト …

【SpringBoot入門】#4~ headerの作成と埋め込み

概要 全ての画面で使用するヘッダーを作成します。 そして、Index画面に埋め込むところまでを行います。 共通ヘッダーの作成

・&lt …

【JUnit5】テストコードの基本

概要 JUnit5でテストコードを書く基本について学ぶ。 テストの命名規則 テストクラス、テストメソッドの記述には一般的な慣例があります。 ここではそれらを紹介しますが、実際にはプロジェクト内でのコー …

【SpringBoot入門】#8~ 検索機能の実装

概要 ・検索フォームから条件を指定して検索すると、条件に一致する結果が一覧画面に表示される。 ・検索条件は複合的に指定できることとする。 ・検索結果は適切にフォーマットされることとする。  (日付はy …

記事を探す

SpringFramworkの良書

■おすすめ教材
Javaの基本を学んだ人が、次のステップとして読む本(中級者向け)

※SpringはJavaのFrameworkの1つです。
変更のしやすさ、保守性の高さが特徴です。