package com.zuidaima.util; import java.util.Comparator; import java.util.HashMap; import java.util.Map; import java.util.TreeMap; public class ValueComparator implements Comparator<Long> { Map<Long, Double> base; public ValueComparator(Map<Long, Double> base) { this.base = base; } public int compare(Long a, Long b) { if (base.get(a).doubleValue() >= base.get(b).doubleValue()) { return -1; } else { return 1; } } public static <K, V extends Comparable<V>> Map<K, V> sortByValues( final Map<K, V> map) { Comparator<K> valueComparator = new Comparator<K>() { public int compare(K k1, K k2) { int compare = map.get(k2).compareTo(map.get(k1)); if (compare == 0) return 1; else return compare; } }; Map<K, V> sortedByValues = new TreeMap<K, V>(valueComparator); sortedByValues.putAll(map); return sortedByValues; } public static void main(String[] args) { HashMap<Long, Double> map = new HashMap<Long, Double>(); map.put(1l, 99.5); map.put(2l, 67.2); map.put(3l, 67.5); map.put(4l, 67.6); ValueComparator bvc = new ValueComparator(map); TreeMap<Long, Double> sorted_map = new TreeMap<Long, Double>(bvc); System.out.println("unsorted map: " + map); sorted_map.putAll(map); System.out.println("results: " + sorted_map); Map<Long, Double> sorted_map2 = sortByValues(map); System.out.println("results2: " + sorted_map2); } }
输出结果:
unsorted map: {1=99.5, 2=67.2, 3=67.5, 4=67.6}
results: {1=99.5, 4=67.6, 3=67.5, 2=67.2}
results2: {1=99.5, 4=67.6, 3=67.5, 2=67.2}
通过key比较大小的原理类似,大家改写下就好了。enjoy it。
原文:http://www.zuidaima.com/share/1830834176347136.htm
查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/Java/
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索map
, return
, compare
, comparator
, public
, base
, java Map
hashmap原理
map根据value大小排序、map根据key获取value、遍历map的key和value、map.put key value、获取map的key和value,以便于您获取更多的相关知识。