Java 基于arraylist d对arraylist a、b、c进行排序

Java 基于arraylist d对arraylist a、b、c进行排序,java,android,arraylist,hashmap,Java,Android,Arraylist,Hashmap,我需要根据另一个数组对几个arraylist进行排序,但我真的不知道如何进行排序。我有列表距离,我使用集合对其进行排序。这非常有效,但我想根据排序后的列表对其他列表进行排序。这就是我到目前为止所做的 private void sortList() { List<Float> tempDistance = new ArrayList<Float>(); List<Float> tempmyLat = new ArrayList<Float&

我需要根据另一个数组对几个
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;
}
private void排序列表(){
List tempDistance=新建ArrayList();
List tempmyLat=new ArrayList();
List tempmyAlt=new ArrayList();
List tempmyLng=new ArrayList();
ArrayList tempplacesListItems=新的ArrayList();
距离=距离;
tempmyLat=myLat;
tempmyLng=myLng;
tempmyAlt=myAlt;
tempplacesListItems=placesListItems;
Collections.sort(tempdance);
对于(int i=0;i
  • 将所有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);
        }
    }
    
    private void排序列表(){
    列表元组=新的ArrayList();
    对于(int i=0;i
    您可以创建一个使用距离列表的新ComparatorClass

    class DistanceBasedComparator<Float> implements Comparator {
        private List<Float> distances;
    
        public DistanceBastedComparator(List distances) {
            this.distances = distances;
        }
    
        public compare(Float f1, Float f2) {
            // implement your comparison here
        }
    }
    [...]
    Comparator comp = new DistanceBaseComparator(tempDistance );
    
    Arrays.sort(tempMyLat, comp);
    
    class DistanceBasedComparator实现Comparator{
    私有列表距离;
    公共距离BastedComparator(列出距离){
    这个。距离=距离;
    }
    公共比较(浮点f1、浮点f2){
    //在这里进行比较
    }
    }
    [...]
    比较器comp=新的距离基准比较器(tempDistance);
    数组.sort(tempMyLat,comp);
    
    您所说的“我想根据另一个列表进行排序”是什么意思?我认为你需要更确切地说明你想要做什么。是否要将索引定位保留在不同的列表中?因此,如果排序后的列表更改了实体的索引,是否希望将其他列表排序到相同的索引?