91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HashMap解惑

發布時間:2020-07-10 11:58:52 來源:網絡 閱讀:498 作者:huashen1621y 欄目:開發技術

HashMap中有一些我們容易忽視的點,

Java代碼  HashMap解惑

  1. public V put(K key, V value) {  

  2.         if (table == EMPTY_TABLE) {  

  3.             inflateTable(threshold);  

  4.         }  

  5.         if (key == null)  

  6.             return putForNullKey(value);  

  7.         int hash = hash(key);  

  8.         int i = indexFor(hash, table.length);  

  9.         for (Entry<K,V> e = table[i]; e != null; e = e.next) {  

  10.             Object k;  

  11.             if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {  

  12.                 V oldValue = e.value;  

  13.                 e.value = value;  

  14.                 e.recordAccess(this);  

  15.                 return oldValue;  

  16.             }  

  17.         }  

  18.   

  19.         modCount++;  

  20.         addEntry(hash, key, value, i);  

  21.         return null;  

  22.     }  

 由上述代碼知道,hash值是用來確定bucketIndex,equals是用來和鏈表上的值比較,因此對于key是自定義的類,強烈建議重寫hashCode和equals方法。

 再看如下代碼下載

Java代碼  HashMap解惑

  1. void addEntry(int hash, K key, V value, int bucketIndex) {  

  2.         if ((size >= threshold) && (null != table[bucketIndex])) {  

  3.             resize(2 * table.length);  

  4.             hash = (null != key) ? hash(key) : 0;  

  5.             bucketIndex = indexFor(hash, table.length);  

  6.         }  

  7.   

  8.         createEntry(hash, key, value, bucketIndex);  

  9.     }  

 if條件告訴我們rehash的條件要同時滿足兩個:map中元素個數不小于閥值即容量*負載因子,對應的bucketIndex處有元素。

 另外,如下代碼作備忘,

Java代碼  HashMap解惑

  1. static int indexFor(int h, int length) {  

  2.         // assert Integer.bitCount(length) == 1 : "length must be a non-zero power of 2";  

  3.         return h & (length-1);  

  4.     }  


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安顺市| 福鼎市| 滨州市| 太谷县| 淮滨县| 五家渠市| 娱乐| 昌都县| 比如县| 巩留县| 临江市| 叙永县| 光泽县| 汾西县| 久治县| 从化市| 巴彦淖尔市| 卢氏县| 深泽县| 德钦县| 二连浩特市| 武乡县| 洪江市| 霸州市| 延安市| 泸州市| 富蕴县| 于田县| 互助| 惠东县| 巴楚县| 无极县| 辽中县| 建瓯市| 汶上县| 明水县| 临江市| 庆阳市| 泸定县| 天台县| 交口县|