今回はfilterについて調べてみました。filterはStream内の要素に対して条件でフィルタするメソッドです。フィルタでtrueが帰ってきた要素のみ後続の処理が行われます。【単一のfilter】まずはListから単一の条件でフィルタして、コンソールに出力するサンプルからです。}filterメソッドはPredicateのオブジェクトをパラメータとして渡します。Predicateインターフェイスはbooleanを返すtestメソッドが定義されています。ラムダ式ではbooleanの結果を返すものを書くだけです。[実行結果]threefour文字列の長さが3を超える値のみが取得されているのがわかります。次にBeanの中身を複数の条件でフィル足して、コンソールに出力してみます。}}isSearchMathingメソッドはあとでメソッド参照させるときに使うためのものです。}複数の条件でフィルタをする場合にはfilterをメソッドチェインでつなげます。filterの中で複数の条件を書いたり、Beanに条件用のメソッドを作ってメソッド参照で書いたりしてもできます。[実行結果]カンツチートイツサンプルソースの3パターンとも同じ結果が返ってきます。ageが40を超えるもので、ArmがRightのデータのみが出力されています。単一のfilterメソッドでやるのと複数のfilteメソッドチェインで行うのと動きがどう変わるかを見てみます。}各filterメソッドを呼び出している際にコンソール出力させるようにしてみました。二つ目のfilterメソッドが実行されていないことがわかります。Cの順番で評価されるようです。最初の条件で絞ってしまったほうが後続の処理は少なくてすむということです。条件で後続の処理対象を絞れました。filterメソッドをメソッドチェインで呼び出す場合は定義した順番で評価されていきます。データ件数が多い場合はfilterの仕方でパフォーマンスが変わってきそうですね。月別アーカイブはてなブログをはじめよう!gloryofさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。