首页 > 解决方案 > 如何像其他排序列表一样对 ArrayList 进行排序?

问题描述

我有两个ArrayLists。一个是Double类型并且包含距离。另一个是String类型,包含城市类型。

这些是列表:

private ArrayList<Double> distance_list = new ArrayList<Double>();
distance.add(123.43);
distance.add(450.43);
distance.add(230.65);

private ArrayList<String> city_list = new ArrayList<String>();
city_list.add("Munich");
city_list.add("Berlin");
city_list.add("Frankfurt");

Collections.sort(distance_list); //to get the closest distance first

如何city_list以相同的顺序对匹配的距离进行排序?

标签: javaandroidarraysstringarraylist

解决方案


您可以分两步完成

  • 您创建了一个 englobing 类
    • 该类必须实现 Comparable(在 Collections.sort() 中使用)
  • 然后你用 Collections.sort() 排序
class DistanceCity implements Comparable<DistanceCity>  {
    private Double distance;
    private String city;

    public DistanceCity(Double distance, String city) {
        this.distance = distance;
        this.city = city;
    }

    @Override
    public int compareTo(DistanceCity o) {
        return distance.compareTo(o.distance);
    }

    @Override
    public String toString() {
        return "DistanceCity{" + "distance=" + distance + ", city='" + city + "'}";
    }
}
private ArrayList<DistanceCity> liste;
liste = new ArrayList<>();
liste.add(new DistanceCity(123.43,"Munich"));
liste.add(new DistanceCity(450.43,"Berlin"));
liste.add(new DistanceCity(230.65,"Frankfurt"));

System.out.println(liste); // unordered
//[DistanceCity{distance=123.43, city='Munich'}, DistanceCity{distance=450.43, city='Berlin'}, DistanceCity{distance=230.65, city='Frankfurt'}]

Collections.sort(liste);

System.out.println(liste); // ordered
// [DistanceCity{distance=123.43, city='Munich'}, DistanceCity{distance=230.65, city='Frankfurt'}, DistanceCity{distance=450.43, city='Berlin'}]


推荐阅读