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

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


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

    網站導航:
     
    主站蜘蛛池模板: 亚洲国产精品自在自线观看| 黄页网站在线视频免费| 日本成人免费在线| 中文字幕无线码免费人妻| 久久精品国产亚洲AV无码麻豆| 免费高清在线影片一区| a毛片免费播放全部完整| ass亚洲**毛茸茸pics| 国产成人精品日本亚洲专区61| 免费v片在线观看视频网站| 成人a毛片视频免费看| 亚洲欧洲国产经精品香蕉网| 亚洲精品老司机在线观看| 99久久99这里只有免费费精品| 四虎影视久久久免费观看| 亚洲成人一级电影| 亚洲深深色噜噜狠狠爱网站| 久久久久国色AV免费观看性色| 97在线视频免费公开视频| 亚洲精品一卡2卡3卡四卡乱码| 亚洲人成网址在线观看| 亚洲福利在线播放| 久久久久免费看黄A片APP| 国产永久免费高清在线| 污视频网站免费观看| 亚洲人成在线中文字幕| 亚洲AV无一区二区三区久久| 四虎影在线永久免费观看| 无人在线直播免费观看| 日韩插啊免费视频在线观看| 国产免费久久精品99久久| 在线观看亚洲专区| 涩涩色中文综合亚洲| 久久久久亚洲av无码专区喷水| 中文字幕第一页亚洲| 国产一区二区三区在线免费| 搡女人真爽免费视频大全| 222www免费视频| 无码国产精品一区二区免费3p| 9久热这里只有精品免费| 九九全国免费视频|