亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

房山区| 禹州市| 微博| 区。| 怀集县| 龙山县| 延吉市| 大邑县| 呼玛县| 彭州市| 金门县| 姚安县| 延津县| 芒康县| 达拉特旗| 铜山县| 新密市| 石棉县| 翼城县| 河池市| 沙雅县| 西盟| 麻阳| 神木县| 秦安县| 日喀则市| 大姚县| 安仁县| 邵阳县| 连城县| 徐州市| 普定县| 灵川县| 乐清市| 科技| 增城市| 本溪市| 贵州省| 漠河县| 眉山市| 故城县|