最代码官方
2014-05-20 18:03:44
原证
java map按照value值来比较大小排序并且返回最终结果
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。
猜你喜欢
请下载代码后再发表评论
相关代码
最近下载
最近浏览
浪里格朗 LV4
2023年1月31日
huaua7676 LV30
2021年9月2日
lllpppwww LV5
2020年3月25日
弥尘123456 LV4
2020年2月19日
luohaipeng LV23
2019年11月19日
aa493821228 LV4
2019年5月30日
Luis虎子 LV16
2019年5月9日
maiyatang520 LV1
2019年4月25日
daixiaowei LV1
2019年4月16日
小周晴 LV6
2019年1月24日