java - 如何像其他排序列表一样对 ArrayList 进行排序?
问题描述
我有两个ArrayList
s。一个是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
以相同的顺序对匹配的距离进行排序?
解决方案
您可以分两步完成
- 您创建了一个 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'}]
推荐阅读
- visual-studio - 为什么我们不能在非系统驱动器上安装大部分 Visual Studio 2019?
- sql - 如何从提到的查询中获取需要记录
- css - 替换搜索和购物篮图标 shopisle
- python - pyspark 中的分桶和一种热编码
- c# - C# WPF:模糊文本
- javascript - 如何在量角器中与黄瓜框架共享网络驱动程序
- python - 如何在 pyplot 中使用 xlim 绘制时间戳
- netlogo - 设置半径寻找伙伴龟
- markdown - 如何评论一个markdown标签
- c# - Async/await, Task Parallel 对于在调试时运行 FINE 但无法运行的复杂进程