プログラミング 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入門】#9~ 更新画面の作成

左側のコンテンツ40% 右側のコンテンツ60% ※2021/01/09  画面遷移等のバックエンド側の内容が抜けていたので追記しました。 概要 検索結果一覧から編集ボタン押下で遷移してくる更新画面です …

【TemplateMethodパターン】売上レポートをテキストとHTML形式で出力分けする事例

概要 デザインパターンのTemplateMethodパターンの事例です。 デザインパターンは増補改訂版 Java言語で学ぶデザインパターン入門で学ぶことができますし、Qiitaでも取り上げられています …

【Java入門】配列の扱い方まとめ

概要 配列の扱い方について学んでいきましょう。 配列は、同一の型の値を複数持つことができるデータ構造です。 ・int型の配列だったら、int(数値)を複数個持っている。 ・String型の配列だったら …

【Java】ArrayListの使い方まとめ

概要 ArrayListはOracleの公式ページでも明記しているクラスです。 Java SE 11 Programmer I (1Z0-815-JPN) 試験 インタフェースによる抽象化 インタフェ …

PHPerがJavaを学ぶ5つのメリット

PHPerである私が会社でJavaの研修担当となり、私自身も大学生以来のJavaを勉強しなおして感じたことを書いていきたいと思います。 対象読者 ・PHP初心者 ・なんとなくPHPで動くプログラムを書 …

記事を探す

SpringFramworkの良書

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

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