Java實現比較兩個List集合是否相等


/**
 * 比較兩個List集合是否相等
 * <p>注:1. 如果一個List的引用為<code>null</code>,或者其包含的元素個數為0,那么該List在本邏輯處理中都算作空;
 * <p>2. 泛型參數E涉及到對象,所以需要確保正確實現了對應對象的<code>equal()</code>方法。
 * @param list1
 * @param list2
 * @return
 */
public static <E>boolean isListEqual(List<E> list1, List<E> list2) {
	// 兩個list引用相同(包括兩者都為空指針的情況)
	if (list1 == list2) {
		return true;
	}
	
	// 兩個list都為空(包括空指針、元素個數為0)
	if ((list1 == null && list2 != null && list2.size() == 0)
			|| (list2 == null && list1 != null && list1.size() == 0)) {
		return true;
	}
	
	// 兩個list元素個數不相同
	if (list1.size() != list2.size()) {
		return false;
	}
	
	// 兩個list元素個數已經相同,再比較兩者內容
	// 采用這種可以忽略list中的元素的順序
	// 涉及到對象的比較是否相同時,確保實現了equals()方法
	if (!list1.containsAll(list2)) {
		return false;
	}
	
	return true; 
}

參考

參考文章兩個List比較內容是否一樣Java判斷2個List集合是否相等(不考慮元素的順序)寫的,主要對文章講到的比較算法的具體實現進行了完善改造。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM