1. 【最常用】顺序 + 元素都完全一样才算相同
两个 List 元素顺序、内容、数量必须完全一致 才返回 true。
代码(直接用)
java
import java.util.List;
import java.util.Objects;
public class ListUtils {
/**
* 判断两个List是否完全相同(顺序+元素都一致)
*/
public static boolean isListEqual(List<?> list1, List<?> list2) {
// 1. 引用相同 → 一定相等
if (list1 == list2) {
return true;
}
// 2. 其中一个为null → 不相等
if (list1 == null || list2 == null) {
return false;
}
// 3. 长度不一样 → 不相等
if (list1.size() != list2.size()) {
return false;
}
// 4. 逐元素比较(Java 官方标准方法)
return list1.equals(list2);
}
}
使用示例
java
List<String> a = List.of("A", "B", "C");
List<String> b = List.of("A", "B", "C");
List<String> c = List.of("B", "A", "C");
System.out.println(isListEqual(a, b)); // true
System.out.println(isListEqual(a, c)); // false(顺序不同)
2. 【业务常用】不看顺序,只要元素一样就算相同
不管顺序,只要元素一样、数量一样 就返回 true。
代码
java
import java.util.List;
import java.util.HashSet;
public static boolean isListSameElements(List<?> list1, List<?> list2) {
if (list1 == list2) return true;
if (list1 == null || list2 == null) return false;
if (list1.size() != list2.size()) return false;
// 转成 HashSet 比较(无序)
return new HashSet<>(list1).equals(new HashSet<>(list2));
}
使用示例
java
List<Integer> l1 = List.of(1,2,3);
List<Integer> l2 = List.of(3,2,1);
System.out.println(isListSameElements(l1, l2)); // true
3. 如果你用的是 Java 8+ / 工具类(一行搞定)
方式A:Objects.equals(最简洁)
java
boolean same = Objects.equals(list1, list2);
✅ 自带空值安全、顺序判断、元素判断。
方式B:Apache Commons(项目常用)
如果项目里有 commons-collections:
java
boolean same = ListUtils.isEqualList(list1, list2);