有序取出Map集合的元素


最近寫到一個程序,返回了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結果如下所示

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM