4

これら2つを比較したいArrayList

public static ArrayList<List<String>> arrayList1 = new ArrayList<List<String>>();
public static ArrayList<List<String>> arrayList2 = new ArrayList<List<String>>();

それらが同じ要素を持っている場合は true を返し、そうでない場合は false を返します。

4

4 に答える 4

14

やってみました

  arrayList1 .equals ( arrayList2 )

これは、同じ要素が同じ順序で含まれている場合に当てはまります。

また

new HashSet(arrayList1) .equals (new HashSet(arrayList2)) 

順番が関係ない場合

http://www.docjar.com/html/api/java/util/AbstractList.java.htmlを参照してください。

于 2013-01-27T07:26:26.237 に答える
3

Apache commons CollectionUtils.retainAllメソッドの使用を試すことができます: collection2 にもある collection1 のすべての要素を含むコレクションを返します。

ArrayList commonList = CollectionUtils.retainAll(arrayList1, arrayList2);

commonList のサイズが等しい場合、 両方のリストが同じであるarrayList1 とarrayList2言えます。

于 2013-01-27T07:23:11.863 に答える
0

依存関係なしで自分でできると思います。

public class ListComparator<T> {

    public Boolean compare(List<List<T>> a, List<List<T>> b) {
        if (a.size() != b.size()) {
            return false;
        }
        for (int i = 0; i < a.size(); i++) {
            if (a.get(i).size() != b.get(i).size()) {
                return false;
            }
            for (int k = 0; k < a.get(i).size(); k++) {
                if(!a.get(i).get(k).equals(b.get(i).get(k))) {
                    return false;
                }
            }
        }
        return true;
    }

}

そして使用して

  ListComparator<String> compare = new ListComparator<String>();
  System.out.println(compare.compare(arrayList1, arrayList2));

この投稿http://habrahabr.ru/post/164177/ (ロシア語)を読んだので、foreachステートメントは使用しません が、英語に翻訳できます。

于 2013-01-27T09:41:55.333 に答える
0

次のコードが使用されます。これは、2 つのリストに同じ要素があるかどうかをチェックします。-->> list1.equals(リスト2)

于 2014-01-10T10:17:40.253 に答える