有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

大家好,我对这个非常陌生,所以我不知道如何解决这个问题。在思考了几天后,我有一个关于ArrayList中对象排序的问题。我有一个包含对象的ArrayList。每个物体都有两倍的“距离”。我想根据最小距离对ArrayList中的对象进行排序

我在这个问题上苦苦挣扎了一段时间,因为我的分类能力很差:(如果有人能帮我,我将不胜感激,如果我太模糊,不知道如何解释,请告诉我。)


共 (2) 个答案

  1. # 1 楼答案

    我认为对前面的答案有一点改进,就是把盒子变成一个双精度的然后使用比较器

    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. # 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;
            }
        }
    });