4

我想比较这两个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方法:返回一个集合,其中包含 collection1 中的所有元素,这些元素也在 collection2 中。

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));

我不使用 foreach 语句,因为我读过这篇文章http://habrahabr.ru/post/164177/ (俄语),但你可以将其翻译成英文。

于 2013-01-27T09:41:55.333 回答
0

使用以下代码。这将检查两个列表是否具有相同的元素。-->> list1.equals(list2)

于 2014-01-10T10:17:40.253 回答