使用Map高效排序

本文介绍如何使用 Java 对 Map 的键进行排序,并提供了一个具体的实现示例。通过自定义比较器,可以对 Map 中的键按字母顺序进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:Map和Map.Entry的解说

Map是java中的接口,Map.Entry是Map的一个内部接口。

Map提供了一些常用方法,如keySet()、entrySet()等方法。

        keySet()方法返回值是Map中key值的集合;

        entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry。

Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。

 

直接代码看结果吧

public static  Map<String,String> order(Map<String,String> map){
       HashMap<String,String> tempMap = new LinkedHashMap();
       List<Map.Entry<String,String>> infoIds = new ArrayList(map.entrySet());
       Collections.sort(infoIds, new Comparator<Map.Entry<String, String>>() {
           @Override
           public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {
               return (o1.getKey().toString().compareTo(o2.getKey()));
           }
       });

       for(int i=0 ; i < infoIds.size(); i++){
           Map.Entry<String,String> item = infoIds.get(i);
           tempMap.put(item.getKey(),item.getValue());
       }
        return tempMap;
   }
public static String mapJoin(Map<String,String> map){
       StringBuilder stringBuilder = new StringBuilder();
       for (String key:map.keySet()){
           if(map.get(key)!=null && !"".equals(map.get(key))){
               stringBuilder.append(key).append("=").append(map.get(key)).append("&");
           }
       }
       if(stringBuilder.length()>0){
           stringBuilder.deleteCharAt(stringBuilder.length()-1);
       }
       return stringBuilder.toString();
   }
 public static void main(String[] args){
        Map<String,String> parameters = new HashMap<String,String>();
        parameters.put("cc","我是c");
        parameters.put("dd","我是d");
        parameters.put("aa","我是a");
        parameters.put("bb","我是b");
       Map<String, String> order = order(parameters);
       String s = mapJoin(order);
       System.out.println("---排序结果为--"+s);
   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值