Map<Interget,String> 1,长安 地点排序:按照河源、深圳、惠州、中山、东莞(比如说长安、大岭山、塘厦、寮步,这些都是东莞市的,统一归纳在一起,)(福永、龙岗、布吉、沙井等这些是属于深圳市的,也统一摆在一起)
时间: 2023-07-03 15:11:20 浏览: 84
List<Map<String, Object>>转化为List<JavaBean>工具类
4星 · 用户满意度95%
可以使用Java中的TreeMap来进行排序,代码如下:
```
// 创建Map对象
Map<Integer, String> placeMap = new HashMap<>();
// 添加数据
placeMap.put(1, "长安");
placeMap.put(2, "大岭山");
placeMap.put(3, "塘厦");
placeMap.put(4, "寮步");
placeMap.put(5, "福永");
placeMap.put(6, "龙岗");
placeMap.put(7, "布吉");
placeMap.put(8, "沙井");
// 创建排序后的Map对象
Map<Integer, String> sortedPlaceMap = new TreeMap<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
// 定义排序规则
if (o1 == 1) {
return -1;
} else if (o2 == 1) {
return 1;
} else if (o1 >= 5 && o2 >= 5) {
return o1.compareTo(o2);
} else if (o1 < 5 && o2 < 5) {
return o1.compareTo(o2);
} else {
return o1 >= 5 ? 1 : -1;
}
}
});
// 将数据添加到排序后的Map中
sortedPlaceMap.putAll(placeMap);
// 输出排序后的Map
for (Map.Entry<Integer, String> entry : sortedPlaceMap.entrySet()) {
System.out.println(entry.getKey() + "," + entry.getValue());
}
```
根据题目中的要求,我们可以定义排序规则:
1. 将地点1(长安)放在最前面。
2. 将深圳市和东莞市的地点分别放在一起,并按照地点编号升序排序。
3. 河源、惠州、中山这三个城市的地点按照地点编号升序排序。
根据这个排序规则,我们可以使用Comparator来实现。在compare方法中,我们首先判断o1和o2是否等于1,如果是,就将地点1放在最前面。如果o1和o2都大于等于5,或者都小于5,就按照地点编号升序排序。如果o1和o2不在同一个城市中,就将深圳市的地点和东莞市的地点分别放在一起,并按照城市的编号升序排序。
最后,我们将原始的Map对象传入到TreeMap中,并输出排序后的Map即可。
阅读全文