java map集合排序的_Java对Map集合进行排序
Java對Map集合進行排序
實現(xiàn) Comparator 接口,重寫compare方法,完成自定義排序
int compare(Object o1, Object o2) 返回一個基本類型的整型
如果要按照升序排序,則o1 小于o2,返回-1(負數(shù)),相等返回0,01大于02返回1(正數(shù))
如果要按照降序排序,則o1 小于o2,返回1(正數(shù)),相等返回0,01大于02返回-1(負數(shù))
使用示例如下:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class MapSort {
public static void main(String[] args) {
sortMap();//測試Map排序
}
public static Map sortMap(){
Map map = new HashMap();
map.put("100M",(double) 100);
map.put("10M",(double) 10);
map.put("1000G",(double) 1000000);
map.put("10G",(double) 10000);
map.put("100T",(double) 100000000);
map.put("10T",(double) 10000000);
map.put("1T",(double) 1000000);
//將map添加到list
List> list = new ArrayList>(map.entrySet());
System.out.println("排序前:"+list);
Collections.sort(list,new Comparator>() {
//從大到小
@Override
public int compare(Entry o1, Entry o2) {
if(o1.getValue()>o2.getValue()){
return -1;
}else if(o1.getValue().equals(o2.getValue())){
String str1 = o1.getKey().substring(o1.getKey().length()-1, o1.getKey().length());
String str2 = o2.getKey().substring(o2.getKey().length()-1, o2.getKey().length());
//因為定義的是Double包裝類型,在比較的時候需要用 equals才能判斷相等,使用==比較的是對象的地址
if(str1.equals(str2)){
return 0;
//數(shù)值相同時,比較的是單位,單位從大到小排序 T>G>M
}else if((str1.equals("T") && str2.equals("G")) ||( str1.equals("T") && str2.equals("M") )||( str1.equals("G") && str2.equals("M"))){
return -1;
}else{
return 1;
}
}else{
return 1;
}
}
});
System.out.println("排序后(從大到小):"+list);
return map;
}
}
執(zhí)行結(jié)果:
排序前:[1000G=1000000.0, 1T=1000000.0, 100T=1.0E8, 10T=1.0E7, 10G=10000.0, 100M=100.0, 10M=10.0]
排序后(從大到小):[100T=1.0E8, 10T=1.0E7, 1T=1000000.0, 1000G=1000000.0, 10G=10000.0, 100M=100.0, 10M=10.0]
原文:https://www.cnblogs.com/DFX339/p/12449970.html
總結(jié)
以上是生活随笔為你收集整理的java map集合排序的_Java对Map集合进行排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: r语言c5.0要求因子输出,R语言中因子
- 下一篇: java开源笔记软件下载_开发常用软件笔