-2

嗨,我对此很陌生,所以在思考了几天后我不知道如何解决这个问题,我有一个关于 ArrayList 中对象排序的问题。我有一个包含对象的 ArrayList。每个对象都有一个双重“距离”。我想根据最小距离对 ArrayList 中的对象进行排序。

自从我对排序很烂以来,我一直在努力解决这个问题:(如果有人可以帮助我,我将不胜感激,如果我含糊不清,请告诉我,不知道如何解释。

4

2 回答 2

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());
于 2013-06-13T00:57:31.220 回答
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;
        }
    }
});
于 2013-06-13T00:51:26.140 回答