我想比较这两个ArrayList
:
public static ArrayList<List<String>> arrayList1 = new ArrayList<List<String>>();
public static ArrayList<List<String>> arrayList2 = new ArrayList<List<String>>();
如果它们具有相同的元素,则返回true,否则为false。
答案 0 :(得分:14)
你试过吗
arrayList1 .equals ( arrayList2 )
如果它们包含相同顺序的相同元素
,则为真或
new HashSet(arrayList1) .equals (new HashSet(arrayList2))
如果订单无关紧要
请参阅http://www.docjar.com/html/api/java/util/AbstractList.java.html
答案 1 :(得分:3)
您可以尝试使用Apache commons CollectionUtils.retainAll方法:返回一个集合,其中包含collection1中也在collection2中的所有元素。
ArrayList commonList = CollectionUtils.retainAll(arrayList1, arrayList2);
如果commonList的大小等于arrayList1
和arrayList2
,则可以说列表都相同。
答案 2 :(得分: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/ (俄语),但你可以把它翻译成英语。
答案 3 :(得分:0)
使用以下代码。这将检查两个列表是否具有相同的元素。 - &GT;&GT; list1.equals(列表2)