java 中,Map常见的有HashMap ,TreeMap等等,Map是一个接口,我们不能直接声明一个Map类型的对象,在实际开发 中,比较常用的Map性数据结构是HashMap和TreeMap,它们都是Map的直接子类。java中的Map结构是key->value键值对存储的,而且根据Map的特性,同一个 Map中不存在两个Key相同的元素,而value不存在这个限制。换句话说,在同一个Map中Key是 唯一的,而value不唯一。如果考虑到存 取效率的话,建议使用HashMap数据结构,而如果需要考虑到Key的顺序,建议使用TreeMap, 但是TreeMap在删除、添加过程中需要排序,性能比较差。

TreeMap,在创建一个TreeMap对象 并往其中添加元素后,添加的元素已经自动按key值排序。

//创建TreeMap对象

Map map = new TreeMap();

map.put(1,"a");

map.put(2,"c");

//遍历集合

for (Iterator it =map.keySet().iterator(); it.hasNext();) {

Person person=map.get(it.next());

System.out.println(person.getId_card()+ " " +person.getName());

}

我们也可以声明一个HashMap对象,然后把HashMap对象赋值给TreeMap。

TreeMap treemap = new TreeMap(map);

按key值排序是很简单的,但是由于key值是唯一的,不能重复的,所有,在实际过程中可能的用到value值排序;

value值排序:(降序)

//声明HashMap对象

Map map = new HashMap();//将Map集合转换成List集合

List> list =

new ArrayList>(map.entrySet());//通过Collections.sort(List l, Comparator c)方法来进行排序

Collections.sort(list, new Comparator>() {public int compare(Map.Entryo1,

Map.Entryo2) {return (o2.getValue() - o1.getValue()); }});

如果是将升序排序,只需要修改o2.getValue() - o1.getValue()为o1.getValue() - o2.getValue()即可。

关于Map.entrySet():

Map是java中的接口,Map.Entry是Map的一个内部接口。Map提供了一些常用方法,如keySet()、entrySet()等方法,keySet()方法返回值是Map中key值的集合;entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry。Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。

HashMap 的遍历右两种方法。

方法—:(效率高,推荐使用)

//利用Map.entry

Map map = newHashMap();

Iterator iter=map.entrySet().iterator();while(iter.hasNext()) {

Map.Entry entry=(Map.Entry) iter.next();

Object key=entry.getKey();

Object val=entry.getValue();

}

方法二:(效率低,不推荐使用)

//先获得key值,在利用key值从map中获取对应的value值

Map map = newHashMap();

Iterator iter=map.keySet().iterator();while(iter.hasNext()) {

Object key=iter.next();

Object val=map.get(key);

}

Map类提供了一个称为entrySet()的方法,这个方法返回一个Map.Entry实例化后的对象集。接着,Map.Entry类提供了一个getKey()方法和一个getValue()方法,因此,第一种代码可以被组织得更符合逻辑。减少了不必要的”get“过程。

当然,还有些其他的排序方法,我正在学习中,希望能学到更多,更好的知识,写出更加高效的代码。

java map 自动排序_java Map排序问题相关推荐

  1. java map 自动排序_Java中Map的排序

    Map的种类 在Java中,Map的主要作用是存储键值对.由于是根据键得到值,所以不允许键重复.它主要有如下几个类别: HashMap: 最常用的Map,它根据键的HashCode值存储数据,根据键可 ...

  2. C++屏蔽map自动排序

    最近写项目时,发现map自动排序了,以前没注意这个问题,可能ms考虑到map查询效率问题,插入时候就自动按key排序,查找其内部构造,发现其是模板实现方式,咱们可以改一改模板就可以避免自动排序(万不得 ...

  3. “避开”std::map自动排序

    说是 "避开",其实是利用他排序的特性: map<string, string> mymap;mymap.insert(pair<string, string&g ...

  4. java字符串字典排序_java实现对map的字典序排序操作示例

    本文实例讲述了java实现对map的字典序排序操作.分享给大家供大家参考,具体如下: java中对map的字典序排序,算法验证比对微信官网https://mp.weixin.qq.com/wiki?t ...

  5. java map key 升序_Java Map 按 key 升序排序

    最近开发微信和支付宝的服务端支付,涉及到字典的排序和 url 参数转换成字典的操作,整理了一个工具类: import java.util.ArrayList; import java.util.Col ...

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

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

  7. c++map自动排序特性

    c++中的map会自动根据first值排序,这样排好序后输出第一个用begin,输出最后一个用rbegin first支持int和string类型的排序,其原理应该是ascii(这一点我没有考证,反正 ...

  8. java map null吗_Java: Map里面的键和值可以为空吗?

    在Java中,Map里面的键和值可以为空吗?我们先来看一个例子: private static void TestHashMap() { // TODO Auto-generated method s ...

  9. java两map取交集_Java Map 求交集 并集 差集

    import com.google.common.collect.MapDifference; import com.google.common.collect.Maps; import java.u ...

最新文章

  1. 北京大学计算机女博士经常看什么资料?
  2. 何恺明一作论文 MAE 已有人复现!PyTorch 版!(附链接)
  3. 特征因子是什么意思_生态因子作用的一般特征
  4. iperf3与netperf使用
  5. java httpinvoker漏洞_Java反序列化漏洞学习
  6. 共识协议(3)比特币之POW
  7. DreamWeaver下如何应用CSS样式
  8. Base64 加密字符串和文件
  9. Java关于 class类的基础方法
  10. 怎么看cudnn的版本好_祖坟风水怎么看,好祖坟有什么征兆?
  11. 编写linux驱动程序步骤
  12. 《零基础》MySQL 教程(一)
  13. datetime-local 传时间戳_传世经典,此生必读——《呼兰河传》
  14. Chinese_PRC_CI_AS 和 Chinese_PRC_90_CI_AI 之间的排序规则冲突问题
  15. Android Java编写布局
  16. Python中的二维数组定义
  17. word文档保护密码忘 了,怎么取消格式和编辑保护
  18. 五阶魔方公式java_5阶魔方教程(五阶魔方一步一步图解)
  19. 如何取消U盘上的设备加密功能Bitlocker——win10家庭版磁盘上有个锁的解决办法——详细操作版本
  20. 科研萌新成长记17——落地

热门文章

  1. Android SDK 环境变量配置-Windows7-20170427
  2. python wasm_wasm和javascript
  3. 织梦装修网站设计师与案例相关联的数据调用教程
  4. python 量化交易知识
  5. 用ChatGPT做表格真香!只需动嘴提要求和复制粘贴
  6. java核心技术影印版_Java核心技术 卷II:高级特性(第8版)(英文影印版)
  7. 那些年,我们一起经历过的 Android 系统性能优化
  8. Python开源项目介绍:网站日志分析工具
  9. python某企业发放的奖金_python练习:奖金发放题目改编遇到的问题,试了半天自己没解决,能帮帮忙么?谢谢谢谢谢谢...
  10. 手机游戏能否引领移动互联网时代?