【Java】Listの比較
今回はListの比較に関する記事になります。
List同士を比較し、格納されている内容が等しいかを判断します。
格納順序も判断材料となるため、同じ値が入っていてもインデックスが一致しない場合はfalseが返ります。
ソース
List<String> listA = new ArrayList<String>(); listA.add("a"); listA.add("b"); listA.add("c"); List<String> listB = Arrays.asList("a", "b", "c"); List<String> listC = null; // 1.equals boolean result1 = listA.equals(listB); // 2.Objects.equals boolean result2 = Objects.equals(listA, listB); // 3.nullの比較 boolean result3 = Objects.equals(listC, listB); System.out.println("1 " + result1); System.out.println("2 " + result2); System.out.println("2 " + result3);
実行結果
1 true 2 true 3 false
1はequalsで比較しています。
Stringなんかはこのequalsで比較するのが一般的でしょうか。
Listでも同じように比較することが可能です。
2、3はObjects.equals。
基本的にはequalsと変わりません。
こちらはnullを比較対象にしてもExceptionが発生しない分使い勝手は良いです。
ちょっと似たようなところでcontainsメソッドもご紹介。
List同士の比較ではないですが、リストの中を対象のオブジェクトで検索することが可能です。
ソース
List<String> listA = Arrays.asList("a", "b", "c"); System.out.println(listA.contains("b"));
実行結果
true
Listの中に「b」が存在するためtrueが返ります。
Mapでも似たようなものがあるので覚えておいて損はありません。
あとはピンポイントで使えそうなもの。
2つのリストを比較し、差分があるもの取得します。
ソース
List<String> listA = Arrays.asList("a", "c"); List<String> listB = Arrays.asList("a", "b", "c"); Collection<String> result = CollectionUtils.subtract(listB, listA); for (String s : result) { System.out.println(s); }
実行結果
b
CollectionUtilsをインポートしないと使えません。
コチラからapache.common.collectionsのjarをダウンロードして使ってください。
subtractメソッドは第1引数のListから第2引数のListの中身を削除していきます。
つまりlistBからlistAの内容を引いたものがresultに代入されます。
引数の順番には気をつけないといけません。
上記コードの場合は、引数を逆にしてしまうとresultには何も残らないので一見差分がないように思えちゃいます。
今回は以上になります。