Map<Key,Value>基于Value值排序
来源:互联网 发布:机构龙虎榜数据 编辑:程序博客网 时间:2024/05/01 23:03
方法1: 使用TreeMap,可以参考下面的代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 } }
译注:如果不自己写Comparator,treemap默认是用key来排序
###方法2:
先通过linkedlist排好序,再放到LinkedHashMap中
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; } }译注:这两种方法,我简单测试了下,如果map的size在十万级别以上,两者的耗时都是几百毫秒,第二个方法会快一些。否则,第一个方法快一些。因此,如果你处理的map,都是几十万级别以下的大小,两种方式随意使用,看个人喜欢了。
亲测,真理
原文链接:https://github.com/giantray/stackoverflow-java-top-qa/blob/master/contents/how-to-sort-a-mapkey-value-on-the-values-in-java.md
阅读全文
0 0
- Map<Key,Value>基于Value值排序
- 【Stackoverflow好问题】Map<Key,Value>基于Value值排序
- java Map 基于Value值排序
- Java Map按键(Key)排序和按值(Value)排序
- Java Map按键(Key)排序和按值(Value)排序
- Java Map按键(Key)排序和按值(Value)排序
- Java Map按键(Key)排序和按值(Value)排序
- Java Map按键(Key)排序和按值(Value)排序
- STL map 按key值和按value值排序
- map中的元素按照key,value值排序
- 根据map中的key或者value值进行排序
- Map分别按照Key和value排序
- Map排序(按key/按value)
- java Map 之 排序(key,value)
- map按key和value排序
- java map按key和value排序
- map key value的排序问题
- map按key和value排序
- 开启我的Python量化之路
- node使用socket断开后延迟发送的问题解决
- apache的ab压力测试
- WIFI访问网络需要的权限
- Windows 10 安装Scrapy 爬虫框架
- Map<Key,Value>基于Value值排序
- wifi模块简单使用教程,如何将数据发送到电脑(esp8266 arduino库的使用)
- KafkaController介绍
- centos7上ansible初步使用
- sqoop 导出mysql,oracle
- 5.27模拟题 逃避系统警察
- AlphaGo 与柯洁华山论剑,人工智能一手遮天指日可待?
- 关于系统时间处理
- LeetCode 494. Target Sum