使用Map高效排序

前言: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);
   }


版权声明:本文为bigboss_666原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。