2019独角兽企业重金招聘Python工程师标准>>>

Java中对Map(HashMap,TreeMap,Hashtable等)的排序时间 
首先简单说一下他们之间的区别:

HashMap: 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null。非 
首先简单说一下他们之间的区别:

HashMap: 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null。非同步的。

TreeMap: 能够把它保存的记录根据键(key)排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。TreeMap不允许key的值为null。非同步的。

Hashtable: 与 HashMap类似,不同的是:key和value的值均不允许为null;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢。

LinkedHashMap: 保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比HashMap慢。key和value均允许为空,非同步的。

TreeMap默认按key进行升序排序,如果想改变默认的顺序,可以使用比较器:

Map<String,String> map = new TreeMap<String,String>(new Comparator<String>(){ 
   public int compare(String obj1,String obj2){ 
    //降序排序 
    return obj2.compareTo(obj1); 
   } 
  }); 
  map.put("month", "The month"); 
  map.put("bread", "The bread"); 
  map.put("attack", "The attack"); 
  
  Set<String> keySet = map.keySet(); 
  Iterator<String> iter = keySet.iterator(); 
  while(iter.hasNext()){ 
   String key = iter.next(); 
   System.out.println(key+":"+map.get(key)); 
  }

如果要对TreeMap按照value的值进行排序,或者对HashMap,Hashtable,LinkedHashMap进行排序,则可以使用Map.Entry<K,V>接口结合List实现:

eg.1 对TreeMap按照value值升序:

List<Map.Entry<String,String>> mappingList = null; 
  Map<String,String> map = new TreeMap<String,String>(); 
  map.put("aaaa", "month"); 
  map.put("bbbb", "bread"); 
  map.put("ccccc", "attack"); 
  
  //通过ArrayList构造函数把map.entrySet()转换成list 
  mappingList = new ArrayList<Map.Entry<String,String>>(map.entrySet()); 
  //通过比较器实现比较排序 
  Collections.sort(mappingList, new Comparator<Map.Entry<String,String>>(){ 
   public int compare(Map.Entry<String,String> mapping1,Map.Entry<String,String> mapping2){ 
    return mapping1.getValue().compareTo(mapping2.getValue()); 
   } 
  }); 
  
  for(Map.Entry<String,String> mapping:mappingList){ 
   System.out.println(mapping.getKey()+":"+mapping.getValue()); 
  }

eg.2 对HashMap(或Hashtable,LinkedHashMap)按照key的值升序:

List<Map.Entry<String,String>> mappingList = null; 
  Map<String,String> map = new HashMap<String,String>(); 
  map.put("month", "month"); 
  map.put("bread", "bread"); 
  map.put("attack", "attack"); 
  
  //通过ArrayList构造函数把map.entrySet()转换成list 
  mappingList = new ArrayList<Map.Entry<String,String>>(map.entrySet()); 
  //通过比较器实现比较排序 
  Collections.sort(mappingList, new Comparator<Map.Entry<String,String>>(){ 
   public int compare(Map.Entry<String,String> mapping1,Map.Entry<String,String> mapping2){ 
    return mapping1.getKey().compareTo(mapping2.getKey()); 
   } 
  }); 
  
  for(Map.Entry<String,String> mapping:mappingList){ 
   System.out.println(mapping.getKey()+":"+mapping.getValue()); 
  }

转载于:https://my.oschina.net/zhenguoguan/blog/138615

Java对Map排序相关推荐

  1. Java作业-Map排序

    目标效果: 源码: import java.util.Comparator; import java.util.HashMap; import java.util.Map; import java.u ...

  2. java中map排序(SortedMap的用法)

    package JavaSenior; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; ...

  3. Java数据结构Map遍历和排序

    map结构和list结合很好用,基本的遍历和排序每次都要查一下,用的不熟练,这里汇总下map的基本遍历和排序,参考的代码如下: package com.vip;import java.util.Arr ...

  4. java treemap value排序_【TreeMap】对Map按key和value分别排序

    使用TreeMap可以对key 和Value进行排序 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. ** Tree ...

  5. java的map键值类型是否固定_Java中Map根据键值(key)或者值(value)进行排序实现

    我们都知道,java中的Map结构是key->value键值对存储的,而且根据Map的特性,同一个Map中 不存在两个Key相同的元素,而value不存在这个限制.换句话说,在同一个Map中Ke ...

  6. Java Map排序详解

    一)Map简介 java.util.Map是一个键值对集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. HashMap:最常用的Map ...

  7. Map排序(Java)

    Java中的Map排序问题 在Java编写程序的过程中,常常会碰到使用map(key,value)来记录数据的情况,有些时候我们需要根据实际需要来对map中的数据进行排序.以下就是个人总结的map排序 ...

  8. java map按照key排序_java Map排序(按key和按value)

    1.按照key排序 对于java中Map的排序,有排序Map,比如TreeMap,对于这个Map,首先只能按照键排序,其次再put和remove的时候由于需要排序,性能上会有所牺牲. 这种方案,使用h ...

  9. JAVA map排序实现

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

  10. Java中Map用法详解

    原文地址http://blog.csdn.net/guomutian911/article/details/45771621 原文地址http://blog.csdn.net/sunny2437885 ...

最新文章

  1. R语言泊松回归(poisson)模型案例:基于robust包的Breslow癫痫数据集
  2. sql删除重复的数据保留一条_leetcode题库-sql练习精讲系列--九、删除重复
  3. tomcat的日志不输出日志信息的解决方法
  4. C语言矩阵M*N节省空间的算法(附完整源码)
  5. webpack设置应用缓存_如何使用Webpack在Rails应用程序中设置TinyMCE
  6. pycharm常用快捷键详解,让你编程 事半功倍。
  7. 三白话经典算法系列 Shell排序实现
  8. python怎么创建变量_Python之变量的创建过程
  9. 阿里云构建Jenkins服务
  10. 【蜕变之路】第31天 Spring Tool Suite和IntelliJ (2019年3月21日)
  11. java--Date时间
  12. innerhtml有值但是页面上无显示_西门子PLCS7-1200用户自定义Web页面制作
  13. 梦参老和尚:糊涂人念〈大悲咒〉往生的故事
  14. Android系统开发篇(二) —— 建立Android系统开发环境之Ubuntu 20.04.4 LTS
  15. 【Linux】/bin/sh、/bin/bash、/bin/dash、init=/sysroot/bin/bash(sh) 、init=/bin/bash(sh) 的区别
  16. 努比亚Z11miniRoot及真机调试常见问题
  17. 嵌入式工控机在舞台灯光控制中的应用
  18. BootLoader有什么作用?
  19. String------字符串的字母大小写切换及获取
  20. android view 曝光,Android 曝光采集(商品view曝光量的统计)第二弹

热门文章

  1. Better And Better for Mac(Mac手势神器BAB)中文版
  2. iOS-@inerface的11条规范写法
  3. 网易整合邮箱和博客 可通过邮件更新博客日志
  4. Chromium引擎控件DotNetBrowser V1.14发布 | 附下载
  5. C语言项目2:图书管理系统
  6. MongoDB 和 mySql 的关系
  7. 微软笔试题 《Image Encryption》
  8. Linux管理员常用网络资源(收集帖)
  9. development period
  10. android UI之去掉状态栏