<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    athrunwang

    紀元
    數據加載中……
    LinkedHashMap/HashMap(數?據?緩?存?準?備?)

    顧名思義LinkedHashMap是比HashMap多了一個鏈表的結構。與HashMap相比LinkedHashMap維護的是一個具有雙重鏈表的HashMap,LinkedHashMap支持2中排序一種是插入排序,一種是使用排序,最近使用的會移至尾部例如 M1 M2 M3 M4,使用M3后為 M1 M2 M4 M3了,LinkedHashMap輸出時其元素是有順序的,而HashMap輸出時是隨機的,如果Map映射比較復雜而又要求高效率的話,最好使用LinkedHashMap,但是多線程訪問的話可能會造成不同步,所以要用Collections.synchronizedMap來包裝一下,從而實現同步。其實現一般為: 
        Map<String String> map = Collections.synchronizedMap(new LinkedHashMap(<String String));

    HashMap,LinkedHashMap,TreeMap都屬于Map

    Map 主要用于存儲鍵(key)值(value)對,根據鍵得到值,因此鍵不允許鍵重復,但允許值重復。

    HashMap 是一個最常用的Map,它根據鍵的HashCode 值存儲數據,根據鍵可以直接獲取它的值,具有很快的訪問速度。HashMap最多只允許一條記錄的鍵為Null;允許多條記錄的值為 Null;HashMap不支持線程的同步,即任一時刻可以有多個線程同時寫HashMap;可能會導致數據的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力。

    LinkedHashMap LinkedHashMap也是一個HashMap,但是內部維持了一個雙向鏈表,可以保持順序

    TreeMap 不僅可以保持順序,而且可以用于排序

    HashMap例子:

        public static void main(String[] args) {
    Map<String, String> map = new HashMap<String, String>();
    map.put("a3", "aa");
    map.put("a2", "bb");
    map.put("b1", "cc");
    for (Iterator iterator = map.values().iterator(); iterator.hasNext();) {
    String name = (String) iterator.next();
    System.out.println(name);
    }
    }

    LinkedHashMap例子:

        public static void main(String[] args) {
    Map<String, String> map = new LinkedHashMap<String, String>();
    map.put("a3", "aa");
    map.put("a2", "bb");
    map.put("b1", "cc");
    for (Iterator iterator = map.values().iterator(); iterator.hasNext();) {
    String name = (String) iterator.next();
    System.out.println(name);
    }
    }

    TreeMap例子:

        public static void main(String[] args) {
    Map<String, String> map = new TreeMap<String, String>(new Comparator<Object>(){
    Collator collator = Collator.getInstance();
    public int compare(Object o1, Object o2) {
    CollationKey key1 = collator.getCollationKey(o1.toString());
    CollationKey key2 = collator.getCollationKey(o2.toString());
    return key1.compareTo(key2);
    //return collator.compare(o1, o2);
    }});
    map.put("a3", "aa");
    map.put("a2", "bb");
    map.put("b1", "cc");
    for (Iterator iterator = map.values().iterator(); iterator.hasNext();) {
    String name = (String) iterator.next();
    System.out.println(name);
    }
    }

    運行這三個例子,體會一下它們之間的區別。

    posted on 2011-11-18 10:30 AthrunWang 閱讀(170) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 亚洲精品~无码抽插| 亚洲va在线va天堂成人| 亚洲国产精品无码久久久秋霞2| 91嫩草私人成人亚洲影院| 久久久久久亚洲av无码蜜芽| 疯狂做受xxxx高潮视频免费| 日韩中文字幕免费视频| 亚洲免费日韩无码系列| 色在线亚洲视频www| 毛片免费视频播放| 亚洲日韩VA无码中文字幕| 亚洲91精品麻豆国产系列在线| 亚美影视免费在线观看| 成人性生交大片免费看午夜a| 久久综合久久综合亚洲| 无码人妻一区二区三区免费手机 | 无码av免费一区二区三区| 免费a级毛片在线观看| 亚洲一区在线免费观看| 岛国av无码免费无禁网站| 亚洲AV成人无码网天堂| 亚洲日本在线观看视频| 国产精品免费大片| 亚洲国产精品嫩草影院在线观看| 久久久久久国产精品免费免费男同 | 97无码免费人妻超级碰碰碰碰| 亚洲AV无码专区在线电影成人| av无码东京热亚洲男人的天堂| 亚洲欧美熟妇综合久久久久| 日本zzzzwww大片免费| 久久精品亚洲综合专区| 两个人日本免费完整版在线观看1 两个人的视频www免费 | 亚洲精品无码永久在线观看你懂的| 99爱视频99爱在线观看免费| 激情综合亚洲色婷婷五月| 免费吃奶摸下激烈视频| 99久久免费精品高清特色大片| 亚洲夂夂婷婷色拍WW47| 成人午夜免费福利| 两个人日本免费完整版在线观看1| 亚洲国产电影在线观看|