java中如何對(duì)Map的key順序排序
1.使用List的默認(rèn)方法 sort 或者 Collections.sort 進(jìn)行排序這種方法需要對(duì)map的key進(jìn)行轉(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的特性進(jì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","老六"); 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的大小進(jìn)行排序?qū)嵗?/strong>
需要對(duì)鍵值對(duì)(key-value)的key進(jìn)行排序的時(shí)候,可以利用TreeMap來(lái)操作,TreeMap默認(rèn)情況下就是按照key的大小來(lái)進(jìn)行排序的(升序),所以只需要使用TreeMap來(lái)存儲(chǔ)key-value對(duì)時(shí),就是排好序的。想要按序取數(shù)據(jù)時(shí),利用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>(); //隨機(jī)產(chǎn)生數(shù)據(jù),存入到map中;默認(rèn)情況下時(shí)升序的。 for(int i=0;i<100;i++) { map.put(random.nextDouble()*1000,random.nextInt(1000)); } //使用Iterator來(lái)取key-value對(duì); 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é)果,會(huì)發(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來(lái)實(shí)現(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é)果,會(huì)發(fā)現(xiàn)key都是按降序輸出的 } } }
總結(jié)
到此這篇關(guān)于java中如何對(duì)Map的key順序排序的文章就介紹到這了,更多相關(guān)java對(duì)Map的key排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring事務(wù)框架之TransactionStatus源碼解析
這篇文章主要為大家介紹了Spring事務(wù)框架之TransactionStatus源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08MyBatis使用自定義TypeHandler轉(zhuǎn)換類型的實(shí)現(xiàn)方法
這篇文章主要介紹了MyBatis使用自定義TypeHandler轉(zhuǎn)換類型的實(shí)現(xiàn)方法,本文介紹使用TypeHandler 實(shí)現(xiàn)日期類型的轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10Java java.lang.InstantiationException異常案例詳解
這篇文章主要介紹了Java java.lang.InstantiationException異常案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08Mybatis-plus多租戶項(xiàng)目實(shí)戰(zhàn)進(jìn)階指南
多租戶是一種軟件架構(gòu)技術(shù),在多用戶的環(huán)境下共有同一套系統(tǒng),并且要注意數(shù)據(jù)之間的隔離性,下面這篇文章主要給大家介紹了關(guān)于Mybatis-plus多租戶項(xiàng)目實(shí)戰(zhàn)進(jìn)階的相關(guān)資料,需要的朋友可以參考下2022-02-02SpringMVC中redirect重定向(帶參數(shù))的3種方式
Spring MVC中做form表單功能提交時(shí),防止用戶客戶端后退或者刷新時(shí)重復(fù)提交問(wèn)題,需要在服務(wù)端進(jìn)行重定向跳轉(zhuǎn),本文主要介紹了SpringMVC中redirect重定向(帶參數(shù))的3種方式,感興趣的可以了解一下2024-07-07