https://www.cnblogs.com/binz/p/6671917.html

一、根据value排序

通用方法

  1. public class MapUtil {
  2. public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map) {
  3. List<Map.Entry<K, V>> list = new LinkedList<Map.Entry<K, V>>(map.entrySet());
  4. Collections.sort(list, new Comparator<Map.Entry<K, V>>() {
  5. public int compare(Map.Entry<K, V> o1, Map.Entry<K, V> o2) {
  6. return (o1.getValue()).compareTo(o2.getValue());
  7. }
  8. });
  9.  
  10. Map<K, V> result = new LinkedHashMap<K, V>();
  11. for (Map.Entry<K, V> entry : list) {
  12. result.put(entry.getKey(), entry.getValue());
  13. }
  14. return result;
  15. }
  16. }

java7

  1. public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map) {
  2. List<Map.Entry<K, V>> list = new LinkedList<>(map.entrySet());
  3. Collections.sort(list, new Comparator<Map.Entry<K, V>>() {
  4. @Override
  5. public int compare(Map.Entry<K, V> o1, Map.Entry<K, V> o2) {
  6. return (o1.getValue()).compareTo(o2.getValue());
  7. }
  8. });
  9.  
  10. Map<K, V> result = new LinkedHashMap<>();
  11. for (Map.Entry<K, V> entry : list) {
  12. result.put(entry.getKey(), entry.getValue());
  13. }
  14. return result;
  15. }
  1. public static Map<String, String> sortMapByValue(Map<String, String> oriMap) {
  2. if (oriMap == null || oriMap.isEmpty()) {
  3. return null;
  4. }
  5. Map<String, String> sortedMap = new LinkedHashMap<String, String>();
  6. List<Map.Entry<String, String>> entryList = new ArrayList<Map.Entry<String, String>>(
  7. oriMap.entrySet());
  8. Collections.sort(entryList, new Comparator<Map.Entry<String, String>> {
  9. @Override
  10. public int compare(Entry<String, String> me1, Entry<String, String> me2) {
  11. return me1.getValue().compareTo(me2.getValue());
  12. }
  13. });
  14.  
  15. Iterator<Map.Entry<String, String>> iter = entryList.iterator();
  16. Map.Entry<String, String> tmpEntry = null;
  17. while (iter.hasNext()) {
  18. tmpEntry = iter.next();
  19. sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());
  20. }
  21. return sortedMap;
  22. }

java8

  1. public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map) {
  2. Map<K, V> result = new LinkedHashMap<>();
  3. Stream<Entry<K, V>> st = map.entrySet().stream();
  4.  
  5. st.sorted(Comparator.comparing(e -> e.getValue())).forEach(e -> result.put(e.getKey(), e.getValue()));
  6.  
  7. return result;
  8. }

二、根据key排序

  1. public static Map<String, String> sortMapByKey(Map<String, String> map) {
  2. if (map == null || map.isEmpty()) {
  3. return null;
  4. }
  5. Map<String, String> sortMap =
  6. new TreeMap<>(Comparator.naturalOrder());
  7. // new TreeMap<>((str1, str2) -> str1.compareTo(str2));
  8. sortMap.putAll(map);
  9. return sortMap;
  10. }

Map 按Key排序 和 按Value排序的更多相关文章

  1. Map<Key,Value>基于Value值排序

    Map<Key,Value> 排序默认是按照KEY值的升序来进行. 针对按照Value来进行排序有两种方法: 第一种 使用TreeMap  代码如下 public class test{ ...

  2. Java Map按键(Key)排序和按值(Value)排序

    Map排序的方式有很多种,两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value).1.按键排序jdk内置的java.util包下的TreeMap<K,V ...

  3. Android 对Map按key和value分别排序

    一.理论准备 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. TreeMap:基于红黑树(Red-Black tre ...

  4. Java Map 按Key排序和按Value排序

    Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value). 1.按键排序 jdk内置的java.util包下的Tr ...

  5. C++ STL中Map的按Key排序和按Value排序

    map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区 分),我们用map来进 ...

  6. Map排序——按key排序,按value排序

    注:转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5959279.html 上一篇博文谈到了集合类的自定义排序方式,那么进一步扩展开来,与集合同等重要的Map有 ...

  7. 对Map按key和value分别排序

    一.理论准备         Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等.         TreeMap:基于红 ...

  8. C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET

    C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET C++ STL中Map的相关排序操作:按Key排序和按Value排序 分类: C ...

  9. Java Map 按Key排序和按Value排序【转】【补】

    package kingtool.sort; import java.util.ArrayList; import java.util.Collections; import java.util.Co ...

  10. Java Map 键值对排序 按key排序和按Value排序

    一.理论准备 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. TreeMap:基于红黑树(Red-Black tre ...

随机推荐

  1. UVA LA 3983 - Robotruck DP,优先队列 难度: 2

    题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...

  2. CSS(二)属性--文本设置

    HTML代码一 <body> <div>这是一个很黑很黑的夜晚,黑云密布,没有任何光亮透过.卖火柴的小姑娘.......</div> </body> C ...

  3. Git的基本使用(github)

    关于Git的基本使用: 上传本地文件到github仓库中 首先要有自己的github账号,新建仓库: saiku-3.9 其次 本地安装好 git , 在本地任意目录下新建目录 saiku-3.9, ...

  4. Qt简单项目--加法计算器(详细代码注释)

    Qt的简单案例--加法计算器(详细代码注释) 一.项目结构 二.项目代码 widget.h #ifndef WIDGET_H #define WIDGET_H //预编译指令, 为了避免头文件被重复包 ...

  5. CSS特性

    css的特性 css具有两大特性:继承性和层叠性 1.继承性 指的是子元素继承父元素的样式,但没有所有的样式都可以继承(那样就太可怕了) 所以具有继承性的属性主要分为三大类 a.文本属性 font-s ...

  6. core net 实现post 跟get

    using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using Syst ...

  7. 从原理上理解如何由震源机制一个节面的解:strike,dip,rake可以求出另一个节面的解

    首先,需要回到最原始的地震矩的表达式: 已知strike,dip,rake 根据strike和dip可以求出v,根据strike,dip,rake,可以求出u. 把求出来的v和u互换,相当于原来的位错 ...

  8. 18-10-16 IE 快捷键的组合方式

    一般快捷键 F11打开/关闭全屏模式 TAB循环的选择地址栏,刷新键和当前标签页 CTRL+F在当前标签页查询字或短语 CTRL+N为当前标签页打开一个新窗口 CTRL+P打印当前标签页 CTRL+A ...

  9. android小程序-电子钢琴-多点触控

    我在第一篇博客<android小程序-电子钢琴-滑动连续响应>中实现了一个简单地7键钢琴,这几天把它又完善了一下,增加了多点触控,按键也增加了一个低音区和一个高音区,使得又可以多弹一点简单 ...

  10. django面试三

    1.Django. Flask.Tornado框架的比较? Django: 对于django,大而全的框架它的内部组件比较多,内部提供:ORM.Admin.中间件.Form.ModelForm.Ses ...