hutool5.8.16 hutool List<Map<Interget,String>> list; list.add(new map{{1,大朗},{2,东莞}})list.add(new map{{1,福田}{2,深圳}}) 地点排序,河源、深圳、惠州、中山、东莞 城市相同的不进行排序
时间: 2023-11-01 21:12:50 浏览: 127
Hutool工具包 v5.8.26.zip
5星 · 资源好评率100%
在Hutool 5.8.16版本中,你可以使用CollUtil类的sort方法进行排序,同时指定自定义的Comparator。具体代码如下:
```java
List<Map<Integer, String>> list = new ArrayList<>();
list.add(MapUtil.builder(new HashMap<Integer, String>()).put(1, "大朗").put(2, "东莞").build());
list.add(MapUtil.builder(new HashMap<Integer, String>()).put(1, "福田").put(2, "深圳").build());
// 定义排序权重
Map<String, Integer> cityOrder = new HashMap<>();
cityOrder.put("河源", 1);
cityOrder.put("深圳", 2);
cityOrder.put("惠州", 3);
cityOrder.put("中山", 4);
cityOrder.put("东莞", 5);
// 自定义Comparator
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 0;
}
// 如果两个Map的城市名称不同,则按照城市名称对应的权重进行排序
Integer order1 = cityOrder.getOrDefault(city1, Integer.MAX_VALUE);
Integer order2 = cityOrder.getOrDefault(city2, Integer.MAX_VALUE);
return order1.compareTo(order2);
}
};
// 排序
CollUtil.sort(list, comparator);
```
这里使用了Hutool的MapUtil类的builder方法方便地构造Map对象。由于CollUtil.sort方法不会改变元素的相对顺序,因此在Comparator中如果两个Map的城市名称相同,则返回0,不进行排序操作。
阅读全文