【问题标题】:Sorting Arraylist of objects based on array of doubles? [duplicate]基于双精度数组对对象的Arraylist进行排序? [复制]
【发布时间】:2013-06-13 00:44:39
【问题描述】:

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

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

【问题讨论】:

  • 在标题中键入会为您提供许多相关的“可能已经有答案的问题”。 OP在这里并没有付出太多努力......
  • 我搜索过,但大部分都看不懂,我对编程很陌生 :(
  • @Riven 那么不幸的是,您可能不理解您选择的答案,但它确实有效。请查看其他答案,以便您了解原因。在编程方面变得更好不仅仅是拥有有效的代码。
  • @Zong Zheng Li 我明白了我选择的答案,我的意思是我在寻找解决方案时不了解 Collections 类,但现在我基本明白了。跨度>

标签: java sorting quicksort


【解决方案1】:

我认为对上一个答案的轻微改进是将框放入 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());

【讨论】:

    【解决方案2】:

    首先,最好为您拥有的类中的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;
            }
        }
    });
    

    【讨论】:

    • 天哪,是的!谢谢你!我一直在努力解决这个问题,它终于可以顺利运行了:D
    猜你喜欢
    • 2012-11-06
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 2011-05-03
    • 2016-08-24
    相关资源
    最近更新 更多