在java中排序对象

use*_*796 2 java

我想做嵌套排序.我有一个课程对象,它有一组应用程序.应用程序具有时间和优先级等属性.现在我想先根据优先级对它们进行排序,并且在优先级内我想按时间对它们进行排序.

msi*_*msi 8

例如,给定此类(仅为简洁起见,公共字段):

public class Job {
    public int prio;
    public int timeElapsed;
}
Run Code Online (Sandbox Code Playgroud)

您可以使用java.util.Collections类中的静态排序(List,Comparator)方法按时间实现排序.这里,创建了一个匿名内部类来实现"作业"的比较器.这有时被称为函数指针的替代(因为Java没有那些).

public void sortByTime() {
    AbstractList<Job> list = new ArrayList<Job>();
    //add some items
    Collections.sort(list, new Comparator<Job>() {
        public int compare(Job j1, Job j2) {
            return j1.timeElapsed - j2.timeElapsed;
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

记住compare()方法的契约模型:http://java.sun.com/javase/6/docs/api/java/util/Comparator.html#compare (T,% 20T)