当サイトは、アフィリエイト広告を利用しています
javaで配列やCollectionのArrayListなどから対象のオブジェクトが存在するかを
チェックするときに使えるStreamのanyMatch、allMatch、noneMatchの使い方をまとめる。
下記の本では streamAPI についても詳しく書いてありおススメです!
また当ブログで紹介しているjava8のstreamAPIを使った
コレクションや配列の操作方法を
下記記事でメソッド別にまとめています!
matchメソッドはStreamの終端処理で探しているオブジェクトがStreamにしたListに存在するかとうかを
チェックして結果をboolean型で返却する。
Stream内にあるかないかをbooleanで返却するだけのため
Streamからオブジェクトを検索した場合などは同じく、StreamのfilterやfindFirstを
使う。
StreamのfindFirstについては下記記事で紹介してます。
Streamのmatchメソッドには3パターンある
anyMatchはStream内に条件に一致するオブジェクトが一つでもある場合に
treuを返却する。
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);}}
allMatchはStream内のオブジェクトがすべて条件に一致してる場合に
trueを返却する
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);}}
noneMatchはallMatchの判定でStream内のオブジェクトがすべて条件と不一致の場合に
trueを返却する
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);}}
このStreamのmatchメソッドを使えばオブジェクトのリストに対して簡単に
存在チェックをかけることができるので、割と使いどころは多そう。
下記を参考にさせていただきました。