码迷,mamicode.com
首页 > 其他好文 > 详细

有序取出Map集合的元素(自写无喷)

时间:2018-01-19 19:49:55      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:log   .com   shm   功能   迭代   size   16px   val   自己   

最近写到一个程序,返回了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集合的元素(自写无喷)

标签:log   .com   shm   功能   迭代   size   16px   val   自己   

原文地址:https://www.cnblogs.com/convict/p/8318352.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!