hutool List<Map<Interget,String>> list; list.add(new map{{1,大朗},{2,东莞}})list.add(new map{{1,福田}{2,深圳}}) 地点排序,河源、深圳、惠州、中山、东莞 城市相同的放到一起,没有列出来的放到最后
时间: 2023-11-01 14:12:49 浏览: 45
你可以按照以下步骤实现按照地点排序的功能:
1. 定义一个Map,用于存储城市名称与对应的排序权重(越小的权重排在越前面)。
```java
Map<String, Integer> cityOrder = new HashMap<>();
cityOrder.put("河源", 1);
cityOrder.put("深圳", 2);
cityOrder.put("惠州", 3);
cityOrder.put("中山", 4);
cityOrder.put("东莞", 5);
```
2. 自定义一个Comparator,用于对List中的Map进行排序。
```java
Comparator<Map<Integer, String>> comparator = new Comparator<Map<Integer, String>>() {
@Override
public int compare(Map<Integer, String> map1, Map<Integer, String> map2) {
String city1 = map1.get(1);
String city2 = map2.get(1);
// 如果两个Map的城市名称相同,则按照第二个元素进行排序
if (city1.equals(city2)) {
return map1.get(2).compareTo(map2.get(2));
}
// 如果两个Map的城市名称不同,则按照城市名称对应的权重进行排序
Integer order1 = cityOrder.getOrDefault(city1, Integer.MAX_VALUE);
Integer order2 = cityOrder.getOrDefault(city2, Integer.MAX_VALUE);
return order1.compareTo(order2);
}
};
```
3. 使用Collections.sort方法进行排序。
```java
Collections.sort(list, comparator);
```
这里假设`list`已经定义并初始化,其中包含了需要排序的元素。
最终,`list`中的元素将按照地点排序,城市相同的元素将会放到一起,没有列出来的元素将会放到最后。
阅读全文