目前分類:未分類文章 (6)

瀏覽方式: 標題列表 簡短摘要
HashTable的應用非常廣泛,HashMap是新框架中用來代替HashTable的類,也就是說建議使用HashMap,不要使用HashTable。可能你覺得HashTable很好用,為什麼不用呢?這裡簡單分析他們的區別。
1.HashTable的方法是同步的,HashMap未經同步,所以在多線程場合要手動同步HashMap這個區別就像Vector和ArrayList一樣。

2.HashTable不允許null值(key和value都不可以),HashMap允許null值(key和value都可以)。

3.HashTable有一個contains(Object value),功能和containsValue(Object value)功能一樣。

4.HashTable使用Enumeration,HashMap使用Iterator。

以上只是表面的不同,它們的實現也有很大的不同。

5.HashTable中hash數組默認大小是11,增加的方式是 old*2+1。HashMap中hash數組的默認大小是16,而且一定是2的指數。

6.哈希值的使用不同,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);
}
以上只是一些比較突出的區別,當然他們的實現上還是有很多不同的,比如
HashMap對null的操作

天天都要努力 發表在 痞客邦 留言(0) 人氣()

有句話說的好...

『妹要走人就是要走人,她告訴你要走人的意思是她要走人,
她說的什麼理由則是一點都不重要。
女生嘛!送你一個蛋糕外面當然要包一些包裝紙啊!
難道你吃蛋糕要吃那些包裝紙嗎?
問人家那些包裝紙有啥含意是毫無意義的。
而且就算你把包裝紙改了,裡面的蛋糕也不會變成燒肉對吧。』

天天都要努力 發表在 痞客邦 留言(0) 人氣()

有句話說的好...

『天要下雨,妹要走人,是這世界上少數任憑你力敵千軍、武勝萬人也沒有辦法阻攔的事情。』

天天都要努力 發表在 痞客邦 留言(1) 人氣()

1.jpg

天天都要努力 發表在 痞客邦 留言(0) 人氣()

IMAG0040

天天都要努力 發表在 痞客邦 留言(0) 人氣()

發人深省的小文

----------------------------------------------------------------
從前有個書生,和未婚妻約好在某年某月某日結婚.
到那一天,未婚妻卻嫁給了別人,書生受此打擊,一病不起.
家人用盡各種辦法都無能為力,眼看書生奄奄一息.

天天都要努力 發表在 痞客邦 留言(4) 人氣()