当サイトは、アフィリエイト広告を利用しています

【java8】StreamのanyMatchでListの存在チェックを行う

作成日:2022月07月30日
更新日:2023年12月14日

javaで配列やCollectionのArrayListなどから対象のオブジェクトが存在するかを
チェックするときに使えるStreamのanyMatch、allMatch、noneMatchの使い方をまとめる。

下記の本では streamAPI についても詳しく書いてありおススメです!

また当ブログで紹介しているjava8のstreamAPIを使った
コレクションや配列の操作方法を
下記記事でメソッド別にまとめています!

Streamのmatchメソッドとは?

matchメソッドはStreamの終端処理で探しているオブジェクトがStreamにしたListに存在するかとうかを
チェックして結果をboolean型で返却する。
Stream内にあるかないかをbooleanで返却するだけのため
Streamからオブジェクトを検索した場合などは同じく、StreamのfilterやfindFirstを
使う。

StreamのfindFirstについては下記記事で紹介してます。

matchメソッドの種類

Streamのmatchメソッドには3パターンある

anyMatch

anyMatchはStream内に条件に一致するオブジェクトが一つでもある場合に
treuを返却する。

anyMatch
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.*;
public class Main {
public static void main(String[] args) throws Exception {
// 検索対象となるListを生成
List<Person>listA = new ArrayList<>();
for(int i=0;i<5;i++){
Person pobj = new Person(i,"Name"+i,"東京"+i,i + 10);
listA.add(pobj);
}
// Streamに存在する
boolean result1 = listA.stream().anyMatch(p->1 == p.getId());
System.out.println(result1);
//Streamに存在しない
boolean result2 = listA.stream().anyMatch(p->999 == p.getId());
System.out.println(result2);
}
}

anyMatchの動作確認

【java8】anyMatch

allMatch

allMatchはStream内のオブジェクトがすべて条件に一致してる場合に
trueを返却する

allMatch
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.*;
public class Main {
public static void main(String[] args) throws Exception {
// 検索対象となるListを生成
// addressをすべて東京にする
List<Person>listA = new ArrayList<>();
for(int i=0;i<5;i++){
Person pobj = new Person(i,"Name"+i,"東京",i + 10);
listA.add(pobj);
}
// 全て東京のためtrueになる
boolean result1 = listA.stream().allMatch(p->"東京" == p.getAddress());
System.out.println(result1);
// 京都のデータを追加
Person pob2 = new Person(1,"仲間はずれ","京都",10);
listA.add(pob2);
//東京でないデータがあるためfalseになる
boolean result2 = listA.stream().allMatch(p->"東京" == p.getAddress());
System.out.println(result2);
}
}

allMatchの動作確認

【java8】allMatch

noneMatch

noneMatchはallMatchの判定でStream内のオブジェクトがすべて条件と不一致の場合に
trueを返却する

noneMatch
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.*;
public class Main {
public static void main(String[] args) throws Exception {
// 検索対象となるListを生成
// addressをすべて東京にする
List<Person>listA = new ArrayList<>();
for(int i=0;i<5;i++){
Person pobj = new Person(i,"Name"+i,"東京",i + 10);
listA.add(pobj);
}
// 全て大阪でないのためtrueになる
boolean result1 = listA.stream().noneMatch(p->"大阪" == p.getAddress());
System.out.println(result1);
// 大阪のデータを追加
Person pob2 = new Person(1,"仲間はずれ","大阪",10);
listA.add(pob2);
//大阪で一致するデータがあるためfalseになる
boolean result2 = listA.stream().noneMatch(p->"大阪" == p.getAddress());
System.out.println(result2);
}
}

noneMatchの動作確認

【java8】noneMatch

まとめ

このStreamのmatchメソッドを使えばオブジェクトのリストに対して簡単に
存在チェックをかけることができるので、割と使いどころは多そう。

参考

下記を参考にさせていただきました。

新着記事

タグ別一覧
top