亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java如何對map進行排序詳解(map集合的使用)

2019-11-26 15:52:33
字體:
來源:轉載
供稿:網友

今天做統計時需要對X軸的地區按照地區代碼(areaCode)進行排序,由于在構建XMLData使用的map來進行數據統計的,所以在統計過程中就需要對map進行排序。

一、簡單介紹Map

在講解Map排序之前,我們先來稍微了解下map。map是鍵值對的集合接口,它的實現類主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。其中這四者的區別如下(簡單介紹):

HashMap:我們最常用的Map,它根據key的HashCode 值來存儲數據,根據key可以直接獲取它的Value,同時它具有很快的訪問速度。HashMap最多只允許一條記錄的key值為Null(多條會覆蓋);允許多條記錄的Value為 Null。非同步的。

TreeMap: 能夠把它保存的記錄根據key排序,默認是按升序排序,也可以指定排序的比較器,當用Iterator 遍歷TreeMap時,得到的記錄是排過序的。TreeMap不允許key的值為null。非同步的。

Hashtable: 與 HashMap類似,不同的是:key和value的值均不允許為null;它支持線程的同步,即任一時刻只有一個線程能寫Hashtable,因此也導致了Hashtale在寫入時會比較慢。

LinkedHashMap: 保存了記錄的插入順序,在用Iterator遍歷LinkedHashMap時,先得到的記錄肯定是先插入的.在遍歷的時候會比HashMap慢。key和value均允許為空,非同步的。

 

二、Map排序

TreeMap

TreeMap默認是升序的,如果我們需要改變排序方式,則需要使用比較器:Comparator。

Comparator可以對集合對象或者數組進行排序的比較器接口,實現該接口的public compare(T o1,To2)方法即可實現排序,該方法主要是根據第一個參數o1,小于、等于或者大于o2分別返回負整數、0或者正整數。如下:

復制代碼 代碼如下:

public class TreeMapTest {
    public static void main(String[] args) {
        Map<String, String> map = new TreeMap<String, String>(
                new Comparator<String>() {
                    public int compare(String obj1, String obj2) {
                        // 降序排序
                        return obj2.compareTo(obj1);
                    }
                });
        map.put("c", "ccccc");
        map.put("a", "aaaaa");
        map.put("b", "bbbbb");
        map.put("d", "ddddd");

        Set<String> keySet = map.keySet();
        Iterator<String> iter = keySet.iterator();
        while (iter.hasNext()) {
            String key = iter.next();
            System.out.println(key + ":" + map.get(key));
        }
    }
}

運行結果如下:

d:ddddd
c:ccccc
b:bbbbb
a:aaaaa

上面例子是對根據TreeMap的key值來進行排序的,但是有時我們需要根據TreeMap的value來進行排序。對value排序我們就需要借助于Collections的sort(List<T> list, Comparator<? super T> c)方法,該方法根據指定比較器產生的順序對指定列表進行排序。但是有一個前提條件,那就是所有的元素都必須能夠根據所提供的比較器來進行比較。如下:

復制代碼 代碼如下:

public class TreeMapTest {
    public static void main(String[] args) {
        Map<String, String> map = new TreeMap<String, String>();
        map.put("d", "ddddd");
        map.put("b", "bbbbb");
        map.put("a", "aaaaa");
        map.put("c", "ccccc");

        //這里將map.entrySet()轉換成list
        List<Map.Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet());
        //然后通過比較器來實現排序
        Collections.sort(list,new Comparator<Map.Entry<String,String>>() {
            //升序排序
            public int compare(Entry<String, String> o1,
                    Entry<String, String> o2) {
                return o1.getValue().compareTo(o2.getValue());
            }

        });

        for(Map.Entry<String,String> mapping:list){
               System.out.println(mapping.getKey()+":"+mapping.getValue());
          }
    }
}


運行結果

a:aaaaa
b:bbbbb
c:ccccc
d:ddddd

HashMap

我們都是HashMap的值是沒有順序的,他是按照key的HashCode來實現的。對于這個無序的HashMap我們要怎么來實現排序呢?參照TreeMap的value排序,我們一樣的也可以實現HashMap的排序。

復制代碼 代碼如下:

public class HashMapTest {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<String, String>();
        map.put("c", "ccccc");
        map.put("a", "aaaaa");
        map.put("b", "bbbbb");
        map.put("d", "ddddd");

        List<Map.Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet());
        Collections.sort(list,new Comparator<Map.Entry<String,String>>() {
            //升序排序
            public int compare(Entry<String, String> o1,
                    Entry<String, String> o2) {
                return o1.getValue().compareTo(o2.getValue());
            }

        });

        for(Map.Entry<String,String> mapping:list){
               System.out.println(mapping.getKey()+":"+mapping.getValue());
          }
     }
}

運行結果

a:aaaaa
b:bbbbb
c:ccccc
d:ddddd

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品福利| 亚洲国产99精品国自产| 国产成人avxxxxx在线看| 欧美亚洲国产视频| 久久精品青青大伊人av| 久久99热精品这里久久精品| 午夜精品国产精品大乳美女| 尤物九九久久国产精品的特点| 色偷偷888欧美精品久久久| 久久久久久久一区二区| 国内外成人免费激情在线视频网站| 欧美性xxxx在线播放| 人九九综合九九宗合| 一区二区欧美在线| 国产日韩视频在线观看| 久99久在线视频| 欧美成人精品h版在线观看| 精品在线小视频| 国产精品香蕉在线观看| 日韩中文字幕在线播放| 久久免费视频在线| 96pao国产成视频永久免费| 午夜伦理精品一区| 久久免费精品视频| 欧美日韩亚洲视频| 国产美女被下药99| 久久亚洲精品毛片| 国产一区二区丝袜高跟鞋图片| 日韩高清av在线| 国产精品香蕉在线观看| 最近2019年手机中文字幕| 超碰91人人草人人干| 国产91在线高潮白浆在线观看| 精品国产依人香蕉在线精品| 色噜噜国产精品视频一区二区| 日韩av在线免费观看一区| 中文字幕国产精品| 国产精品羞羞答答| 亚洲自拍小视频免费观看| 久久成人这里只有精品| 国产精品久久久久久久久久三级| 久久久久久久91| 久久韩国免费视频| 91国偷自产一区二区三区的观看方式| 亚洲黄色在线看| 久久精品久久久久| 国产黑人绿帽在线第一区| 欧美成人亚洲成人日韩成人| 日韩成人在线免费观看| 欧美日韩国产一区二区| 中文字幕亚洲一区二区三区五十路| 国产精品狼人色视频一区| 欧美性极品少妇精品网站| 国产精品久久久久aaaa九色| 国产成人精品免高潮费视频| 丝袜情趣国产精品| 91产国在线观看动作片喷水| 精品久久国产精品| 91高清在线免费观看| 97超碰蝌蚪网人人做人人爽| 午夜精品三级视频福利| 亚洲国产精品va| 欧美日韩免费观看中文| 国产精品av在线播放| 日韩久久精品成人| 九九九热精品免费视频观看网站| 国模精品一区二区三区色天香| 久热国产精品视频| 久久久久久久亚洲精品| 国产精品视频xxxx| 粗暴蹂躏中文一区二区三区| 国产精品免费小视频| 91精品久久久久久久| 色偷偷亚洲男人天堂| 欧美日韩不卡合集视频| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲精品不卡在线| 欧美成人三级视频网站| 97高清免费视频| 亚洲另类图片色| 国产精品福利片| 国产亚洲精品一区二区| 中文字幕成人在线| 欧美成人午夜激情在线| 国内精品视频久久| 97视频在线免费观看| 粗暴蹂躏中文一区二区三区| 国产视频在线观看一区二区| 亚洲天堂av网| 国产美女精品视频免费观看| 国产va免费精品高清在线观看| 欧美黑人一区二区三区| 久久久久久久影院| 欧美多人爱爱视频网站| 久久久电影免费观看完整版| 亚洲欧美日韩精品久久亚洲区| 欧美国产日韩视频| 91免费欧美精品| 日韩免费高清在线观看| 精品电影在线观看| 日韩中文在线不卡| 久久99精品久久久久久琪琪| 久久综合伊人77777尤物| 国产裸体写真av一区二区| 成人亚洲综合色就1024| 中文字幕无线精品亚洲乱码一区| 国产不卡在线观看| 中文字幕精品网| 久久伊人色综合| 国产91精品网站| 精品久久久久久久久久久久| 亚洲色图第一页| 亚洲福利视频专区| 色综合久久久888| 亚洲精品国产拍免费91在线| 色99之美女主播在线视频| 黑人与娇小精品av专区| 亚洲韩国欧洲国产日产av| 亚洲欧美日本另类| 国产精品白丝jk喷水视频一区| 国产精品视频在线观看| 国产丝袜精品第一页| 精品国产乱码久久久久久虫虫漫画| 国产在线日韩在线| 欧美国产极速在线| 国产精品96久久久久久又黄又硬| 亚州国产精品久久久| 亚洲视频在线播放| 久久久欧美精品| 亚洲黄页视频免费观看| 亚洲国产精品va在线看黑人| 琪琪亚洲精品午夜在线| 精品视频久久久久久| 亚洲成人激情在线观看| 羞羞色国产精品| 亚洲区一区二区| 2019中文在线观看| 国产一区红桃视频| 日韩高清欧美高清| 国外成人免费在线播放| 清纯唯美亚洲综合| 亚洲欧美国产高清va在线播| 亚洲伊人久久大香线蕉av| 日韩av在线播放资源| 日韩av在线免费播放| 日韩中文在线中文网在线观看| 91精品久久久久久久久久久| 欧美成人免费全部观看天天性色| 奇米一区二区三区四区久久| 2018日韩中文字幕| 日韩中文字幕在线播放| 日韩一区二区在线视频| 亚洲第一综合天堂另类专| 欧美日韩一区二区免费视频| 按摩亚洲人久久| 日韩av三级在线观看| 亚洲国模精品一区| 韩国v欧美v日本v亚洲| 欧美成人黑人xx视频免费观看| 久久久久久国产免费| 国产精品私拍pans大尺度在线| 国产精品久久久久久久久久久久久| 综合欧美国产视频二区| 久久天天躁狠狠躁夜夜躁|