国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

HashMap與HashTable

2019-11-14 11:58:36
字體:
供稿:網(wǎng)友

復(fù)習(xí)java基礎(chǔ),隨便做個(gè)筆記。

1、HashMap和HashTable都是一直鍵值對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)。

2、它們繼承的父類不一樣:

public class HashMap<K, V> extends AbstractMap<K, V>  implements Map<K, V>, Cloneable, Serializable

public class Hashtable<K, V> extends Dictionary<K, V>  implements Map<K, V>, Cloneable, Serializable

3、HashMap是非線性安全的,HashTable是線性安全的:

HashMap源碼的put方法:

public V put(K paramK, V paramV)

HashTable源碼的put方法:

public synchronized V put(K paramK, V paramV)

4、HashMap運(yùn)行key或value為null,HashTable不允許:

HashMap源碼:

public V put(K paramK, V paramV)  {    if (this.table == EMPTY_TABLE)      inflateTable(this.threshold);    if (paramK == null)      return putForNullKey(paramV);    int i = hash(paramK);    int j = indexFor(i, this.table.length);    for (Entry localEntry = this.table[j]; localEntry != null; localEntry = localEntry.next)    {      Object localObject1;      if ((localEntry.hash != i) || (((localObject1 = localEntry.key) != paramK) && (!(paramK.equals(localObject1)))))        continue;      Object localObject2 = localEntry.value;      localEntry.value = paramV;      localEntry.recordaccess(this);      return localObject2;    }    this.modCount += 1;    addEntry(i, paramK, paramV, j);    return null;  }

HashTable源碼:

public synchronized V put(K paramK, V paramV)  {    if (paramV == null)      throw new NullPointerException();    Entry[] arrayOfEntry = this.table;    int i = hash(paramK);    int j = (i & 0x7FFFFFFF) % arrayOfEntry.length;    for (Entry localEntry = arrayOfEntry[j]; localEntry != null; localEntry = localEntry.next)    {      if ((localEntry.hash != i) || (!(localEntry.key.equals(paramK))))        continue;      Object localObject = localEntry.value;      localEntry.value = paramV;      return localObject;    }    this.modCount += 1;    if (this.count >= this.threshold)    {      rehash();      arrayOfEntry = this.table;      i = hash(paramK);      j = (i & 0x7FFFFFFF) % arrayOfEntry.length;    }    localEntry = arrayOfEntry[j];    arrayOfEntry[j] = new Entry(i, paramK, paramV, localEntry);    this.count += 1;    return null;  }

5、HashTable有contains方法,HashMap沒有contains方法。看HashTable源碼知道,其實(shí)它的contains方法就是containsValue。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 中卫市| 贵州省| 舟曲县| 桦川县| 丰原市| 余庆县| 尚志市| 六枝特区| 舞阳县| 保山市| 汕尾市| 余干县| 大宁县| 临朐县| 莲花县| 理塘县| 宝鸡市| 阿拉善左旗| 读书| 凤山县| 淄博市| 英德市| 奉贤区| 丰顺县| 大庆市| 澳门| 仲巴县| 鄂托克旗| 临海市| 东阳市| 内江市| 民丰县| 清远市| 紫阳县| 扬州市| 徐闻县| 浠水县| 广灵县| 吴川市| 儋州市| 嘉善县|