<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
    還是應該帶著問題去思考比較好。因為人之間總有共性,能夠思考同樣的事情.雖然有的觀察不到,但是事物之間確實有聯系。

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


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

    網站導航:
     
    主站蜘蛛池模板: 国产综合成人亚洲区| 亚洲精品福利网泷泽萝拉| 免费又黄又硬又爽大片| 国产v片免费播放| 四虎永久免费地址在线网站| 天天天欲色欲色WWW免费| 成人超污免费网站在线看| 嫩草视频在线免费观看| 手机在线免费视频| 在线观着免费观看国产黄| 可以免费观看一级毛片黄a| 亚洲 无码 在线 专区| 亚洲国产成人久久笫一页| 亚洲一级片内射网站在线观看| 国产啪亚洲国产精品无码| 亚洲精品无码久久一线| 亚洲国产一区在线| 亚洲成a人片毛片在线| 亚洲永久在线观看| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 99在线观看精品免费99| 最好看最新的中文字幕免费 | 直接进入免费看黄的网站| 日本黄页网址在线看免费不卡 | 亚洲图片校园春色| 亚洲色无码专区一区| 羞羞漫画登录页面免费| 国产成人无码免费看片软件 | 亚洲国产成人手机在线观看| 美女视频黄频a免费| 中出五十路免费视频| 2021精品国产品免费观看| 国产成人A在线观看视频免费| 国产精品嫩草影院免费| 中文字幕无码精品亚洲资源网| 亚洲AV综合色一区二区三区| 亚洲一卡二卡三卡| 男男gay做爽爽免费视频| 丁香花在线视频观看免费| 成人黄色免费网站| 啊v在线免费观看|