基于双精度数组对对象的Arraylist进行排序?

时间:2013-06-13 00:44:39

标签: java sorting quicksort

嗨,我对此非常陌生,所以我不知道如何在思考几天之后弄清楚这一点,我对ArrayList中对象的排序有疑问。我有一个包含对象的ArrayList。每个对象都有一个双“距离”。我想基于最小距离在ArrayList中对对象进行排序。

我一直在努力研究这个问题,因为我厌倦了排序:(如果有人可以帮助我,我会很感激,并告诉我,如果我要模糊,不知道如何解释它。

2 个答案:

答案 0 :(得分:2)

我认为前一个答案略有改进是装入Double然后使用compareTo

Collections.sort(list, new Comparator<MyObject>() {
    public int compare(MyObject o1, MyObject o2) {
        return new Double(o1.getDistance()).compareTo(o2.getDistance());
    }
});

如果您想先排序最大,请转到

return new Double(o2.getDistance()).compareTo(o1.getDistance());

答案 1 :(得分:1)

首先,为您所在类中的distance属性提供访问器是很好的。

然后,为了根据其中对象的distance字段对列表进行排序,您可以使用Comparator接口的匿名实现

List<MyObject> list = ...;
Collections.sort(list, new Comparator<MyObject>() {
    public int compare(MyObject o1, MyObject o2) {
        if (o1.getDistance() == o2.getDistance()) { 
             return 0;
        } else { 
           return o1.getDistance() > o2.getDistance() ? 1 : -1;
        }
    }
});