java中如何對Map的key順序排序
1.使用List的默認(rèn)方法 sort 或者 Collections.sort 進行排序這種方法需要對map的key進行轉(zhuǎn)換
Map<String,String> map=new HashMap<>(); map.put("4","maliu"); map.put("1","張三"); map.put("3","李四"); map.put("7","王五"); map.put("9","趙六"); map.put("2","老六"); ArrayList<Map.Entry<String, String>> entries = new ArrayList<>(map.entrySet()); //排序條件 entries.sort(Comparator.comparingInt(entry -> Integer.parseInt(entry.getKey()))); //Collections.sort(entries, Comparator.comparingInt(entry -> Integer.parseInt(entry.getKey()))); HashMap<String, String> news = new LinkedHashMap<>(); for (Map.Entry<String, String> entry : entries) { news.put(entry.getKey(),entry.getValue()); } news.forEach((a,b)->{ System.out.printf("k -> %s | v -> %s%n", a,b); });
2.使用TreeMap的特性進行排序
Map<String,String> map=new HashMap<>(); map.put("4","maliu"); map.put("1","張三"); map.put("3","李四"); map.put("7","王五"); map.put("9","趙六"); map.put("2","老六"); TreeMap<String, String> treeMap = new TreeMap<>(map); treeMap.forEach((k,v)->{ System.out.printf("k -> %s | v -> %s%n", k,v); });
2.1.在TreeMap基礎(chǔ)上自定義排序方法
Map<String,String> map=new HashMap<>(); map.put("1","maliu"); map.put("22","張三"); map.put("4444","李四"); map.put("666666","王五"); map.put("55555","趙六"); map.put("333","老六"); //TreeMap<String, String> treeMap = new TreeMap<>((o1,o2)-> o2.length()-o1.length()); //TreeMap<String, String> treeMap2 = new TreeMap<>((o1,o2)-> o1.length()-o2.length()); TreeMap<String, String> treeMap = new TreeMap<>(Comparator.comparingInt(String::length)); treeMap.putAll(map); treeMap.forEach((k,v)->{ System.out.printf("k -> %s | v -> %s%n", k,v); });
java中Map中根據(jù)key的大小進行排序?qū)嵗?/strong>
需要對鍵值對(key-value)的key進行排序的時候,可以利用TreeMap來操作,TreeMap默認(rèn)情況下就是按照key的大小來進行排序的(升序),所以只需要使用TreeMap來存儲key-value對時,就是排好序的。想要按序取數(shù)據(jù)時,利用Iterator。
- 升序Demo
import java.util.Iterator; import java.util.Map; import java.util.Random; import java.util.Set; import java.util.TreeMap; public class Main { public static void main(String args[]) { System.out.println("kaishi"); Random random = new Random(); Map<Double, Integer> map = new TreeMap<Double, Integer>(); //隨機產(chǎn)生數(shù)據(jù),存入到map中;默認(rèn)情況下時升序的。 for(int i=0;i<100;i++) { map.put(random.nextDouble()*1000,random.nextInt(1000)); } //使用Iterator來取key-value對; Set<Double> keySet = map.keySet(); Iterator<Double> iter = keySet.iterator(); while (iter.hasNext()) { Double key = iter.next(); System.out.println(key + ":" + map.get(key)); //打印結(jié)果,會發(fā)現(xiàn)key都是按升序輸出的 } } }
- 降序Demo
import java.util.Iterator; import java.util.Map; import java.util.Random; import java.util.Set; import java.util.TreeMap; import java.util.Comparator; public class Main { public static void main(String args[]) { System.out.println("kaishi"); Random random = new Random(); Map<Double, Integer> map = new TreeMap<Double, Integer>( new Comparator<Double>(){ @Override public int compare(Double o1, Double o2) { //利用Comparator來實現(xiàn)降序; return (int) (o2-o1); } }); for(int i=0;i<100;i++) { map.put(random.nextDouble()*1000,random.nextInt(1000)); } Set<Double> keySet = map.keySet(); Iterator<Double> iter = keySet.iterator(); while (iter.hasNext()) { Double key = iter.next(); System.out.println(key + ":" + map.get(key));//打印結(jié)果,會發(fā)現(xiàn)key都是按降序輸出的 } } }
總結(jié)
到此這篇關(guān)于java中如何對Map的key順序排序的文章就介紹到這了,更多相關(guān)java對Map的key排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring事務(wù)框架之TransactionStatus源碼解析
這篇文章主要為大家介紹了Spring事務(wù)框架之TransactionStatus源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08MyBatis使用自定義TypeHandler轉(zhuǎn)換類型的實現(xiàn)方法
這篇文章主要介紹了MyBatis使用自定義TypeHandler轉(zhuǎn)換類型的實現(xiàn)方法,本文介紹使用TypeHandler 實現(xiàn)日期類型的轉(zhuǎn)換,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-10-10Java java.lang.InstantiationException異常案例詳解
這篇文章主要介紹了Java java.lang.InstantiationException異常案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08SpringMVC中redirect重定向(帶參數(shù))的3種方式
Spring MVC中做form表單功能提交時,防止用戶客戶端后退或者刷新時重復(fù)提交問題,需要在服務(wù)端進行重定向跳轉(zhuǎn),本文主要介紹了SpringMVC中redirect重定向(帶參數(shù))的3種方式,感興趣的可以了解一下2024-07-07