map根据value从大到小排序

/**
     * map根据value值排序
     * @param map 
     * @param num num<0取全部的值,num>=0取前num个
     * @return
     */
    public static <K,V extends Comparable<? super V>> List<K> revsort(Map<K, V> map,int num){
        List<Map.Entry<K, V>> list = new ArrayList<Map.Entry<K,V>>(map.entrySet());
        Collections.sort(list, new Comparator<Map.Entry<K, V>>() {
            @Override
            public int compare(Entry<K, V> o1, Entry<K, V> o2) {
                 return (o2.getValue()).compareTo( o1.getValue() );
            }
        });
         List<K> result = new ArrayList<K>();
         if(num<0){
            result.add(list.get(num).getKey());
            for(Entry<K, V> entry : list){
                result.add(entry.getKey());
            }
         }else{
             for(int i=0;i<num;i++){
                 result.add(list.get(i).getKey());
             }
         }
          System.out.println(result);

        return result;
    }


你可能感兴趣的:(map根据value从大到小排序)