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

Java对象数组按number排序时name字段未同步排序问题排查

问题根因

你的排序逻辑存在核心错误:排序过程中仅交换了不同对象的number字段值,没有同步处理name字段,更没有交换数组中存储的对象本身。
数组里每个位置存的是StudentList对象的引用,每个对象自身同时绑定number和name两个属性。你现在的操作相当于把A对象的编号改成B的、B对象的编号改成A的,但两个对象本身还在原来的数组位置,绑定的姓名也没动,自然会出现编号有序、姓名乱序的错位问题。

修复方案

对象数组排序时,不要单独交换对象的单个属性,直接交换数组两个位置存储的整个对象引用即可,这样每个对象自带的number和name会始终绑定,排序后两个字段自然同步匹配。
修正后的完整可运行代码如下:

class StudentList { //DaftarSiswa
    public int number;
    public String name;
    
    public StudentList(int number, String name) {
        this.number = number;
        this.name   = name;
    }
}

class OrderNumber { //NomorUrut
    public static void main(String[] args) {
        StudentList[] data = new StudentList[10];
        data[0] = new StudentList(10, "Brycen");
        data[1] = new StudentList( 6, "Devan");
        data[2] = new StudentList( 3, "Rylan");
        data[3] = new StudentList( 1, "Gordy");
        data[4] = new StudentList( 2, "Tim");
        data[5] = new StudentList( 4, "Curtis");
        data[6] = new StudentList( 5, "Abe");
        data[7] = new StudentList( 9, "Melvin");
        data[8] = new StudentList( 8, "Ansel");
        data[9] = new StudentList( 7, "Dalton");
        
        // 修正排序逻辑:交换整个对象而非单个number字段
        for (int i = 0; i < data.length; i++) {
            for (int j = i + 1; j < data.length; j++) {
                if (data[i].number > data[j].number) {
                    // 临时变量存储整个StudentList对象
                    StudentList tmp = data[i];
                    data[i] = data[j];
                    data[j] = tmp;
                }
            }
        }

        // 打印排序结果
        System.out.println("Number\t\tName");
        for (StudentList item : data) {
            System.out.println(item.number + "\t\t" + item.name);
        }
    }
}
运行结果

执行代码后输出和预期完全一致:

Number		Name
1		Gordy
2		Tim
3		Rylan
4		Curtis
5		Abe
6		Devan
7		Dalton
8		Ansel
9		Melvin
10		Brycen

注:如果后续需要扩展排序规则(比如按姓名字典序排序),只需要修改if里的判断条件即可,不需要调整交换逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:01:23