在多个条件上对数组进行排序

时间:2015-02-17 21:25:13

标签: java arrays sorting object

我有这种方法用变量id对对象数组进行排序,有名称& GPA也是。您将如何排序整个对象数组?我只得到id的排序,但输出时的名称是混合的。这就是我到目前为止所做的。

private Student[] st;
private int count;

public ProcessStudents() {
    st = new Student[5];
    count = 0;

    public void sortAscendingID() {
        for (int n = 0; n < count - 1; n++) {
            int min = st[n].getId();
            int index = n;
            for (int o = n + 1; o < count; o++) {
                if (st[o].getId() < min) {
                    min = st[o].getId();
                    index = o;
                }
            }
            if (st[n].getId() > min) {
                int p = st[n].getId();
                st[n].setId(min);
                st[index].setId(p);
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

如果我是为生产系统编写代码而不是说家庭作业或我做的任何事情:

List<Student> list = new ArrayList<Student>(Arrays.asList(st)); 
Collections.sort(list);

答案 1 :(得分:0)

实现Comparable并覆盖其方法:

@Override
public int compareTo(Object arg0) {
    // return -1, 0 or 1 depending on compared fields.
    // if(this.GetId()>((Student)arg0).GetId())
    // ...
    return 0;
}


... 

Collections.sort(collectionOfStudentObjects);