首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Map依照Value值进行排序

2013-10-22 
Map按照Value值进行排序1TreeMap按照value进行排序public class Testing {public static void main(String

Map按照Value值进行排序

1  TreeMap按照value进行排序

public class Testing {    public static void main(String[] args) {        HashMap<String,Double> map = new HashMap<String,Double>();        ValueComparator bvc =  new ValueComparator(map);        TreeMap<String,Double> sorted_map = new TreeMap<String,Double>(bvc);        map.put("A",99.5);        map.put("B",67.4);        map.put("C",67.4);        map.put("D",67.3);        System.out.println("unsorted map: "+map);        sorted_map.putAll(map);        System.out.println("results: "+sorted_map);    }}class ValueComparator implements Comparator<String> {    Map<String, Double> base;    public ValueComparator(Map<String, Double> base) {        this.base = base;    }    // Note: this comparator imposes orderings that are inconsistent with equals.        public int compare(String a, String b) {        if (base.get(a) >= base.get(b)) {            return -1;        } else {            return 1;        } // returning 0 would merge keys    }}


 输出结果

  unsorted map: {D=67.3, A=99.5, B=67.4, C=67.4}    results: {D=67.3, B=67.4, C=67.4, A=99.5}


2.HashMap按值进行排序

public class MapUtil{    public static <K, V extends Comparable<? super V>> Map<K, V>         sortByValue( Map<K, V> map )    {        List<Map.Entry<K, V>> list =            new LinkedList<Map.Entry<K, V>>( map.entrySet() );        Collections.sort( list, new Comparator<Map.Entry<K, V>>()        {            public int compare( Map.Entry<K, V> o1, Map.Entry<K, V> o2 )            {                return (o1.getValue()).compareTo( o2.getValue() );            }        } );        Map<K, V> result = new LinkedHashMap<K, V>();        for (Map.Entry<K, V> entry : list)        {            result.put( entry.getKey(), entry.getValue() );        }        return result;    }}


 

热点排行