判断两个集合是不是相同

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);
相关推荐
EatFan1 分钟前
JunoYi 框架实践:Spring Boot 项目为什么拆成 framework、module、server 三层?
java·spring boot·后端·framework·module·模块化·junoyi
Wang's Blog11 分钟前
Java 项目实战: 外卖平台优化-从库Slave配置与主从复制验证
java·开发语言
子一!!15 分钟前
集成Spring家族的Spring论坛实战==一阶段
java·后端·spring
何中应18 分钟前
Maven 执行控制台中文乱码问题
java·maven·intellij-idea
Zhou14113622 分钟前
SpringSecurity_01_入门与认证
java
java_nnnn23 分钟前
JavaEE进阶-CSS初识
java·前端·css·java-ee·html
Wang's Blog30 分钟前
Java 项目实战: 外卖平台优化-使用Redis作为缓存产品与TTL配置
java·redis·缓存
谢亮_vipxieliang41 分钟前
ValidX 在微服务架构中的验证策略
java·spring boot·spring·spring cloud·hibernate
其实防守也摸鱼44 分钟前
内网安全防护实践:从攻击视角理解防御要点
java·前端·安全·架构·自动化·nps
我是小白呀1 小时前
17-企业Workflow引擎怎么选:定时、队列、n8n、Temporal与Camunda
java·开发语言·人工智能·dubbo·workflow