如何比较两个ArrayList <List >

我想比较这两个ArrayList

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

如果它们具有相同的元素,则返回true,否则为false。

您可以尝试使用Apache commons CollectionUtils.retainAll方法:返回一个集合,其中包含collection1中也在collection2中的所有元素。

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

如果arrayList1的大小等于arrayList1arrayList2 ,则可以说列表都相同。

你有没有尝试过

  arrayList1 .equals ( arrayList2 ) 

如果它们包含相同顺序的相同元素,则为true

要么

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

如果订单无关紧要

请参见http://www.docjar.com/html/api/java/util/AbstractList.java.html

我认为你可以自己做,没有任何依赖。

 public class ListComparator { public Boolean compare(List> a, List> 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 compare = new ListComparator(); System.out.println(compare.compare(arrayList1, arrayList2)); 

我不使用foreach声明,因为我已经阅读了这篇文章http://habrahabr.ru/post/164177/ (俄语),但你可以将它翻译成英语。

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