You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用快速排序按Salary字段排序ArrayList失败问题排查

快速排序对Employee列表排序未生效的问题排查

问题核心

你的sort方法返回了一个新的排序后的ArrayList,但在main方法里调用sort(empList)时,没有将返回结果赋值给empList。原列表empList完全未被修改,因此两次打印的内容完全一致。

修复步骤

1. 修正main方法的调用逻辑

将排序后的结果重新赋值给empList,替换原来的空调用:

// 原代码:sort(empList);
empList = sort(empList);

2. 优化排序方法的边界判断(可选)

原代码中a.size()<=0的判断冗余,ArrayList的size不可能为负数,改为判断a.size() <= 1更合理(单个元素无需排序):

public static ArrayList<Employee> sort(ArrayList<Employee> a) {
    if(a.size() <= 1)
        return a;
    ArrayList<Employee> smaller = new ArrayList<Employee>();
    ArrayList<Employee> greater = new ArrayList<Employee>();
    int pivot = a.get(0).getSalary();
    for(int i=1; i<a.size(); i++) {
        Integer n = a.get(i).getSalary();
        if(n.compareTo(pivot) < 0)
            smaller.add(a.get(i));
        else
            greater.add(a.get(i));
    }
    smaller = sort(smaller);
    greater = sort(greater);
    smaller.add(a.get(0));
    smaller.addAll(greater);
    return smaller;
}

修复后预期输出

修改后再次运行,列表会按Salary升序排列:

Employee ID: 1
Name: A 1
Department: Marketing
Salary: 1

Employee ID: 2
Name: B 2
Department: Sales
Salary: 2

Employee ID: 5
Name: J 5
Department: Sales
Salary: 7

Employee ID: 3
Name: C 3
Department: Admin
Salary: 342

Employee ID: 4
Name: D 4
Department: Marketing
Salary: 55555

内容的提问来源于stack exchange,提问作者NewbieDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 11:20:35