最近写到一个程序,返回了map,但是经过查阅资料,map是没有顺序的,各种查阅资料无果,最后自己写了这个方法。。

1,通过map集合的keySet()方法,获取到一个包含map所有key的Set集合

2,定义一个新的TreeSet集合(TreeSet集合有自动排序功能)

3,将第一步得到的Set集合遍历赋给TreeSet集合,这样所有key都排好序并保存在TreeSet里面

4,然后通过TreeSet的迭代器遍历,并同时根据迭代器返回的key,一个一个取出map里面的value

----------------------------------------------------------------代码示例------------------------------------------------------------------------------

Map<Integer, String> oldMap=new HashMap<Integer,String>();//待排序的map集合
Map<Integer, String> newMap=new HashMap<Integer,String>();//排序后的map集合
Set<Integer> keySet = oldMap.keySet();//存放key的set集合
TreeSet<Integer> keyTreeSet = new TreeSet<Integer>();//存放key排序后的set集合
Iterator<Integer> itKeySet;//Set集合的迭代器
Iterator<Integer> itKeyTreeSet;//TreeSet集合的迭代器

  //放入一些测试数据
  oldMap.put(1, "content1");
oldMap.put(5, "content5");
oldMap.put(6, "content6");
oldMap.put(10, "content10");
oldMap.put(11, "content11");
oldMap.put(100, "content100");
oldMap.put(999, "content999"); keySet=oldMap.keySet();//获取map的所有key
itKeySet=keySet.iterator();
while (itKeySet.hasNext()) {
  Integer key = (Integer) itKeySet.next();
  System.out.print(key+" ");//打印排序前key的顺序
    keyTreeSet.add(key);
} System.out.println("\n"); itKeyTreeSet=keyTreeSet.iterator();
while (itKeyTreeSet.hasNext()) {
  Integer key = (Integer) itKeyTreeSet.next();
  System.out.print(key+" ");//打印一下排序后key的顺序
    newMap.put(key, oldMap.get(key));//此时根据排序好的TreeSet挨个取出Map里面的value,此处我只是放到了一个newMap中
}

打印key结果如下所示

有序取出Map集合的元素的更多相关文章

  1. 有序的Map集合--LinkedHashMap

    提出问题: 在写一个dao的时候,我的需求是这个dao是一个万能的,目前的方法只有一个查询出实体类对应的表中所有的数据,通过传入的对象,利用反射获取实体类中的属性名,属性类型,利用字符串拼接获取相应属 ...

  2. java的取出map里所有元素的两种方式

    /* * 取出map元素的两种方式 */package com.map.test; import java.util.HashMap;import java.util.Iterator;import ...

  3. Java分享笔记:使用entrySet方法获取Map集合中的元素

    /*--------------------------------- 使用entrySet方法取出Map集合中的元素: ....该方法是将Map集合中key与value的关系存入到了Set集合中,这 ...

  4. 集合框架-Map集合

    * Map集合和Collection集合的区别? * Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的.可以把这个理解为:夫妻对 * Collection集合存储元素是单独出现的, ...

  5. Map集合与转化

    |--Hashtable:底层是哈希表数据结构,是线程同步的.不可以存储null键,null值. |--HashMap:底层是哈希表数据结构,是线程不同步的.可以存储null键,null值.替代了Ha ...

  6. Java | Map集合

    Map集合 在现实生活中,有非常多的东西,是和另外一种东西对应的,并且还是唯一的,比如:身份证号与个人,个人与手机,一夫一妻...等,这种关系就是对应关系,又叫做映射.Java为这种数据类型提供了专门 ...

  7. Javase之集合体系(4)之Map集合

    集合体系之Map集合 ##Map<K,V>( 接口 ) 特点:将键映射到值对象,一个映射不能包含重复的键:每个键只能映射一个值 Map集合与Collection集合的区别 ​ Map集合存 ...

  8. HashMap,ConcurrentHashMap原理。Collection(list,set,map集合区别)。和CAS

    collection里面有什么子类?(list和set是实现了collection接口的.) List: 1.可以允许重复的对象(可重复,有序集合).2.可以插入多个null元素.3.常用的实现类有 ...

  9. Android(java)学习笔记102:Map集合功能概述

    下面通过代码引入Map集合:如下 package cn.itcast_01; import java.util.HashMap; import java.util.Map; /* * 作为学生来说,是 ...

随机推荐

  1. android-tools下的uiautomatorviewer截图,提示“Unexpected error while obtaining UI hierarchy”

    使用原来工具下的uiautomatorviewer对android 5.1.0的手机,进行截图,是正常的,切换到android10截图,就报错"Unexpected error while ...

  2. 初识python 之 爬虫:爬取双色球中奖号码信息

    人生还是要有梦想的,毕竟还有python.比如,通过python来搞一搞彩票(双色球).注:此文仅用于python学习,结果仅作参考.用到知识点:1.爬取网页基础数据2.将数据写入excel文件3.将 ...

  3. Java 总结 数据底层原理 【包括 ArrayList、LinkedList、hash table、HashMap、Hashtable、ConcurrentHashMap、hash code、HashSet、LinkedHashMap、LinkedHashSet】

    1.ArrayList (1)底层是由动态数组实现的[使用了List接口]. (2)动态数组是长度不固定,随着数据的增多而变长. (3)如果不指定,默认长度为10,当添加的元素超过当前数组的长度时,会 ...

  4. 第10组 Beta冲刺 (4/5)(组长)

    1.1基本情况 ·队名:今晚不睡觉 ·组长博客: https://www.cnblogs.com/cpandbb/p/14018650.html ·作业博客:https://edu.cnblogs.c ...

  5. Word2010制作个人名片

    原文链接: https://www.toutiao.com/i6488858441698771470/ 页面设置: 选择"页面布局"选项卡,"页面设置"功能组, ...

  6. kafka学习笔记(一)消息队列和kafka入门

    概述 学习和使用kafka不知不觉已经将近5年了,觉得应该总结整理一下之前的知识更好,所以决定写一系列kafka学习笔记,在总结的基础上希望自己的知识更上一层楼.写的不对的地方请大家不吝指正,感激万分 ...

  7. 展示html/javascript/css------Live-Server服务器

    Live-server简介 这是一款带有热加载功能的小型开发服务器.用它来展示你的HTML / JavaScript / CSS,但不能用于部署最终的网站. 官网地址:https://www.npmj ...

  8. Java 各个版本中的新特性

    新特性你知道多少? Java 8 Lambda 表达式 接口增加默认方法等 方法引用 流 Stream Java 9 模块系统 交互式工具jshell .of() 创建不可变集合 接口支持私有方法 更 ...

  9. day4 对偶数、偶数位的操作

    1.函数fun()的功能:从低位开始取出整形变量s中偶数位上的数,依次构成一个新数放在t中.高位仍在高位. 效果理想:但是经测试的时候出现了错误 输入987654321时,打印出来的却是18681.经 ...

  10. JVM完整详解:内存分配+运行原理+回收算法+GC参数等

    不管是BAT面试,还是工作实践中的JVM调优以及参数设置,或者内存溢出检测等,都需要涉及到Java虚拟机的内存模型.内存分配,以及回收算法机制等,这些都是必考.必会技能. JVM内存模型 JVM内存模 ...