java - 基于数组列表 d 对数组列表 a、b、c 进行排序

标签 java android arraylist hashmap

我需要根据另一个数组对几个 arraylist 进行排序,但真的不知道如何去做。我有列表距离,并使用集合对其进行排序。效果很好,但我想根据排序列表对其他列表进行排序。这就是我到目前为止所做的

private void sortList() {
    List<Float> tempDistance = new ArrayList<Float>();
    List<Float> tempmyLat = new ArrayList<Float>();
    List<Float> tempmyAlt = new ArrayList<Float>();
    List<Float> tempmyLng = new ArrayList<Float>();
    ArrayList<HashMap<String, String>> tempplacesListItems = new ArrayList<HashMap<String, String>>();

    tempDistance = Distance;
    tempmyLat = myLat;
    tempmyLng = myLng;
    tempmyAlt = myAlt;
    tempplacesListItems = placesListItems;

    Collections.sort(tempDistance);

    for (int i = 0; i < Distance.size(); i++) {
        Log.d("sorted distance", "" + tempDistance.get(i));
        for (int k = 0; k < tempDistance.size(); k++) {
            if (Distance.get(i) == tempDistance.get(k)) {
                tempplacesListItems.set(k, placesListItems.get(i));
                tempmyLat.set(k, myLat.get(i));
                tempmyLng.set(k, myLng.get(i));
                tempmyAlt.set(k, myAlt.get(i));
            }
        }
    }

    myLat = tempmyLat;
    myLng = tempmyLng;
    myAlt = tempmyAlt;
    placesListItems = tempplacesListItems;
}

最佳答案

  1. 将所有 4 个值放入自定义类中。
  2. 为该类实现 Comparable 接口(interface)。
  3. 根据您输入的列表创建该类的对象列表。
  4. 对对象列表进行排序。

例如:

private void sortList() {
    List<MyTuple> tuples = new ArrayList<>();

    for (int i = 0; i < Distance.size(); i++) {
        tuples.add(new MyTuple(Distance.get(i), myLat.get(i), 
                                myAlt.get(i), myLon.get(i)));
    }

    Collections.sort(tuples);

    // do something with tuples
}

private class MyTuple implements Comparable<MyTuple> {
    private float distance;
    private float latitude;        
    private float longitude;
    private float altitude;

    public MyTuple(float distance, float altitude, 
                   float latitude, float longitude) {
        this.distance = distance;
        this.latitude = latitude;            
        this.longitude = longitude;
        this.altitude = altitude;
    }

    public int compareTo(MyTuple other) {
        return Float.compare(this.distance, other.distance);
    }
}

关于java - 基于数组列表 d 对数组列表 a、b、c 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16010222/

相关文章:

java - 编程: open 2 popup windows with one click

android - 快捷设置下拉菜单打开时有没有回调方法?

android - 从Android中的数组列表中检索元素?

java - 单次和双重检查延迟初始化

java - 是否可以使用 Optional.ofNullable 来检查是否为 null 并分配默认值

android - 在 Android 的默认媒体播放器中显示图像

java - 在基于 Java 的文本游戏中穿过房间

java - 比较同一个List Java中的元素

java - MongoDB $aggregate $push Java Spring Data中的多个字段

javascript - 为什么我的 Cordova Android 应用程序在使用类声明定义对象时抛出 "reserved word"错误?