日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

HashMap解惑

發布時間:2025/3/21 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HashMap解惑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

Java代碼??

  • public?V?put(K?key,?V?value)?{??

  • ????????if?(table?==?EMPTY_TABLE)?{??

  • ????????????inflateTable(threshold);??

  • ????????}??

  • ????????if?(key?==?null)??

  • ????????????return?putForNullKey(value);??

  • ????????int?hash?=?hash(key);??

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

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

  • ????????????Object?k;??

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

  • ????????????????V?oldValue?=?e.value;??

  • ????????????????e.value?=?value;??

  • ????????????????e.recordAccess(this);??

  • ????????????????return?oldValue;??

  • ????????????}??

  • ????????}??

  • ??

  • ????????modCount++;??

  • ????????addEntry(hash,?key,?value,?i);??

  • ????????return?null;??

  • ????}??

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

    ?再看如下代碼下載

    Java代碼??

  • void?addEntry(int?hash,?K?key,?V?value,?int?bucketIndex)?{??

  • ????????if?((size?>=?threshold)?&&?(null?!=?table[bucketIndex]))?{??

  • ????????????resize(2?*?table.length);??

  • ????????????hash?=?(null?!=?key)???hash(key)?:?0;??

  • ????????????bucketIndex?=?indexFor(hash,?table.length);??

  • ????????}??

  • ??

  • ????????createEntry(hash,?key,?value,?bucketIndex);??

  • ????}??

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

    ?另外,如下代碼作備忘,

    Java代碼??

  • static?int?indexFor(int?h,?int?length)?{??

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

  • ????????return?h?&?(length-1);??

  • ????} ?


  • 轉載于:https://blog.51cto.com/11696680/1867927

    總結

    以上是生活随笔為你收集整理的HashMap解惑的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。