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

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

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

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks

    HashMap / HashTable / HashSet

    HashTable 與 HashMap:
     
              表面:
                      HashTable不允許null(keyvalue都不可以),HashMap允許null(keyvalue都可以)
              HashTable的方法是同步的,HashMap未經同步,所以在多線程場合要手動同步HashMap這個區別就像VectorArrayList一樣。
              HashTable有一個contains(Object value),功能和containsValue(Object value)功能一樣。
              HashTable使用EnumerationHashMap使用Iterator
       
          內部:
              HashTablehash數組默認大小是11,增加的方式是 old*2+1HashMaphash數組的默認大小是16,而且一定是2的指數。
             
              哈希值的使用不同,HashTable直接使用對象的hashCode,代碼是這樣的:
                  int hash = key.hashCode();
                      int index = (hash & 0x7FFFFFFF) % tab.length;

                  HashMap重新計算hash值,而且用與代替求模:
                 int hash = hash(k);
                      int i = indexFor(hash, table.length);

                      static int hash(Object x) {
                   int h = x.hashCode();
                          
    h += ~(h << 9);
                  h ^= (h >>> 14);
                  h += (h << 4);
                  h ^= (h >>> 10);
                  return h;
                     }

                     static int indexFor(int h, int length) {
                  return h & (length-1);
                    }

      HashSet 、 HashMap:

               HashMap可以看作三個視圖:keySetvalueCollectionEntrySet這里HashSet就是其實就是HashMap的一個視圖。HashSet內部就是使用Hashmap實現的,和Hashmap不同的是它不需要KeyValue兩個值。
            

            往hashset中插入對象其實只不過是內部做了

                  public boolean add(Object o) {

                        return map.put(o, PRESENT)==null;
                 
    }

            往hashset中插入對象其實只不過是內部做了

                  public boolean add(Object o) {

                        return map.put(o, PRESENT)==null;
                 
    }

                
         HashMap為散列映射,它是基于hash table的一個實現,它可在常量時間內安插元素,或找出一組key-value pair.

         HashSet為散列集,它把查找時間看的很重要,其中所有元素必須要有hashCode()


    posted on 2007-11-24 15:07 禮物 閱讀(4911) 評論(2)  編輯  收藏

    評論

    # re: HashMap 、HashTable、HashSet的區別 2008-09-17 22:30 地方
    我是外行 看不懂  回復  更多評論
      

    # re: HashMap 、HashTable、HashSet的區別 [未登錄] 2010-06-03 10:51
    還是應該帶著問題去思考比較好。因為人之間總有共性,能夠思考同樣的事情.雖然有的觀察不到,但是事物之間確實有聯系。

    對于性能不僅與數量還和質量 戰略 運氣有關 運氣其實是沒有考慮人為因素的帶來的隨機性  回復  更多評論
      


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

    網站導航:
     
    主站蜘蛛池模板: 精品免费视在线观看| 日韩少妇内射免费播放| 日韩免费视频一区二区| 中文字幕久久亚洲一区| 国产福利免费视频 | 久久WWW免费人成—看片| 亚洲五月午夜免费在线视频| 日韩大片在线永久免费观看网站| 国产一级高清视频免费看| 日韩免费码中文在线观看| 久久精品国产亚洲5555| 久草免费福利在线| 亚洲综合国产精品| 一二三四在线观看免费高清中文在线观看| 亚洲男人天堂影院| 嫩草影院在线免费观看| 四虎精品免费永久免费视频| 亚洲色偷偷综合亚洲AVYP| 日韩内射激情视频在线播放免费 | 你懂的免费在线观看| 亚洲情a成黄在线观看动漫尤物| 性xxxxx大片免费视频| 亚洲一区二区三区亚瑟 | 亚洲AV午夜成人片| 国产免费的野战视频| 亚洲国产精品无码久久久秋霞1| 亚洲av区一区二区三| 今天免费中文字幕视频| 亚洲人成77777在线观看网| 国产一级淫片a免费播放口之 | 亚洲国产综合无码一区二区二三区| 美女被免费网站视频在线| 亚洲理论电影在线观看| 成人午夜免费福利视频| 特级毛片A级毛片100免费播放| 亚洲国产成人片在线观看无码| 最新中文字幕电影免费观看| 国产精品视频全国免费观看| 亚洲国产成人九九综合| 九月婷婷亚洲综合在线| 国产高清免费视频|