java中如何對Map的key順序排序
1.使用List的默認(rèn)方法 sort 或者 Collections.sort 進(jìn)行排序這種方法需要對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>
需要對鍵值對(key-value)的key進(jìn)行排序的時(shí)候,可以利用TreeMap來操作,TreeMap默認(rèn)情況下就是按照key的大小來進(jìn)行排序的(升序),所以只需要使用TreeMap來存儲key-value對時(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來取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來實(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é)果,會發(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源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
MyBatis使用自定義TypeHandler轉(zhuǎn)換類型的實(shí)現(xiàn)方法
這篇文章主要介紹了MyBatis使用自定義TypeHandler轉(zhuǎn)換類型的實(shí)現(xiàn)方法,本文介紹使用TypeHandler 實(shí)現(xiàn)日期類型的轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10
Java java.lang.InstantiationException異常案例詳解
這篇文章主要介紹了Java java.lang.InstantiationException異常案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
Mybatis-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-02
SpringMVC中redirect重定向(帶參數(shù))的3種方式
Spring MVC中做form表單功能提交時(shí),防止用戶客戶端后退或者刷新時(shí)重復(fù)提交問題,需要在服務(wù)端進(jìn)行重定向跳轉(zhuǎn),本文主要介紹了SpringMVC中redirect重定向(帶參數(shù))的3種方式,感興趣的可以了解一下2024-07-07

