/** * 比較兩個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; }