HashMap按照value排序的实现

一、实现的思想

  1. 将HashMap中的元素按照Entry<Key,Value>类型存入到LinkedList集合中。
  2. 实现自定义排序,对LinkedList集合排序。
  3. LinkedList集合的元素存入到HashMap中,返回排序好的结果

二、代码实现

    /**
     * 
     * @param map HashMap<String, Integer> 按照值进行排序
     * @return:返回排序后的Map
     */
    public static HashMap<String, Integer>  hashMapSort(HashMap<String, Integer> map){
        //1、按顺序保存map中的元素,使用LinkedList类型
        List<Entry<String, Integer>> keyList = new LinkedList<Entry<String, Integer>>(map.entrySet()); 
        //2、按照自定义的规则排序
        Collections.sort(keyList, new Comparator<Entry<String, Integer>>() {
            @Override
            public int compare(Entry<String, Integer> o1,
                    Entry<String, Integer> o2) {
                    if(o2.getValue().compareTo(o1.getValue())>0){  
                        return 1;  
                   }else if(o2.getValue().compareTo(o1.getValue())<0){  
                        return -1;  
                   }  else {
                       return 0;
                   }
            }
                      
        });
        //3、将LinkedList按照排序好的结果,存入到HashMap中
        HashMap<String,Integer> result=new LinkedHashMap<>();
        for(Entry<String, Integer> entry:keyList){
            result.put(entry.getKey(),entry.getValue());
        }
        return result;
    }

 

posted @ 2016-10-18 14:53  LyJs  阅读(3894)  评论(0编辑  收藏  举报