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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hash冲突解决和javahash冲突解决

發布時間:2024/4/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hash冲突解决和javahash冲突解决 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

其實就是四種方法的演變

1.開放定址法

具體就是把數據的標志等的對長度取模

?

有三種不同的取模

線性探測再散列 給數據的標志加增量,取模

平方探測再散列 給數據的標志平方,取模

隨機探測再散列 把數據的標志隨機化,取模

?

線性,平方顯然很容被人猜出規律,所以最終是隨機,那么是不是存在隨機會出現取模的值相等的情況

?

2.鏈地址法

而解決值不同,hash相同的方法有鏈地址法。

//先從數組上取下原來的值,給塞到新的節點去,然后把新的節點再放到數組上。 void createEntry(int hash, K key, V value, int bucketIndex) { Entry<K,V> e = table[bucketIndex]; table[bucketIndex] = new Entry<>(hash, key, value, e); size++; } Entry(int h, K k, V v, Entry<K,V> n) { value = v; next = n; key = k; hash = h; }

將值不同hash相同的放在同一個地方,取值時遍歷數據。

那么是不是存在一個地方有幾個值,一個地方沒有值的情況

?

3.再hash法

就是當hash遇到重復的hash的時候,給自己在hash一次,然后hashCount+1,說明要多hash一次獲取地址。

那么是不是存在hashCount+9999999,才能找到地址的情況

?

4.建立一個公共溢出區

上面都有hashCount來記錄hash的次數了,我直接新一個公共溢出區,用overIndex=99來記錄不是更好嗎?

那么,hash沖突基本解決,但是同樣存在一個問題!

建立一個公共溢出區在map容器小的時候,作用不大,放在公共溢出區還不如擴容。只有當map的容器越大,擴容需要的空間越多,公共溢出區才實用。

?

5.java的hash沖突解決 鏈地址法

put方法分析

public V put(K key, V value) {//hash()方法在上面已經出現過了,就不貼了return putVal(hash(key), key, value, false, true);}final V putVal(int hash, K key, V value, boolean onlyIfAbsent,boolean evict) {Node<K, V>[] tab;Node<K, V> p;int n, i;// tab為空則創建if ((tab = table) == null || (n = tab.length) == 0)n = (tab = resize()).length;// 計算index,并對null做處理if ((p = tab[i = (n - 1) & hash]) == null)tab[i] = newNode(hash, key, value, null);else {Node<K, V> e;K k;// 節點key存在,直接覆蓋valueif (p.hash == hash &&((k = p.key) == key || (key != null && key.equals(k))))e = p;// 判斷該鏈為紅黑樹else if (p instanceof TreeNode)e = ((TreeNode<K, V>) p).putTreeVal(this, tab, hash, key, value);// 該鏈為鏈表else {for (int binCount = 0; ; ++binCount) {if ((e = p.next) == null) {p.next = newNode(hash, key, value, null);//鏈表長度大于8轉換為紅黑樹進行處理 TREEIFY_THRESHOLD = 8if (binCount >= TREEIFY_THRESHOLD - 1) // -1 for 1st treeifyBin(tab, hash);break;}// key已經存在并相等,不往鏈表加值if (e.hash == hash &&((k = e.key) == key || (key != null && key.equals(k))))break;
             // key不存在,p,e是老值,p.next是新值p
= e;}}if (e != null) { // existing mapping for keyV oldValue = e.value;if (!onlyIfAbsent || oldValue == null)e.value = value;afterNodeAccess(e);
           //鏈地址法觸發,返回老值,寫了這么久代碼才知道put返回不僅僅是null。
return oldValue;}}++modCount;// 超過最大容量 就擴容 threshold:單詞解釋--閾(yu)值,不念閥(fa)值!順便學下語文咯。if (++size > threshold)resize();afterNodeInsertion(evict);return null;}

?

轉載于:https://www.cnblogs.com/ydymz/p/10078287.html

總結

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

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

主站蜘蛛池模板: 无码 人妻 在线 视频 | 天堂俺去俺来也www 欧美大片在线播放 | 日本h在线观看 | 偷拍精品一区二区三区 | 国产做爰高潮呻吟视频 | 国产成人精品免费在线观看 | 九九视频在线观看 | 日本少妇吞精囗交视频 | 久婷婷| 魔女鞋交玉足榨精调教 | 国产一区二区三区视频在线 | 精品黑人一区二区三区在线观看 | 无码人妻精品一区二区三区9厂 | 日韩av中文字幕在线播放 | 91最新在线 | 亚洲色图欧美在线 | 17c国产精品一区二区 | 亚洲欧洲日本在线 | 美女毛片视频 | 农村村妇真实偷人视频 | 亚洲国产精品视频在线观看 | 精品欧美一区二区三区久久久 | 色伊人久久 | 国产精品免费视频观看 | 夜色视频在线观看 | 日韩精品中文字幕一区 | 人人做人人爽人人爱 | 亚洲欧美综合色 | 四虎免费视频 | 成人激情视频在线观看 | 免费麻豆| 久久久久久久九九九九 | 欧美日韩亚洲国产精品 | 国产精品久久免费视频 | av影院在线观看 | 一卡二卡三卡在线观看 | 午夜激情电影在线观看 | 亚洲精品日韩在线观看 | 冲田杏梨一区二区三区 | 91喷水视频| 亚洲av无码一区二区三区在线观看 | 蜜桃精品视频在线观看 | 亚洲精品91天天久久人人 | 国产人妖在线观看 | 妓院一钑片免看黄大片 | 日韩福利电影在线 | 国产熟妇另类久久久久 | 亚洲精品高清在线 | a√国产 | 欧美成人精品二区三区99精品 | 国产在线视视频有精品 | 啪啪av导航 | 亚洲一区电影在线观看 | 免费美女av| 在线观看a网站 | 九九九色 | 国产成人在线观看免费网站 | 这里只有精品在线观看 | 国产成人av无码精品 | 毛片高清免费 | 蜜臀视频网站 | 欧美日韩不卡在线 | 精品久久久免费 | 日韩美女黄色 | 四虎影城库 | 天堂影视av| 伊人色网站| 91porny丨首页入口在线 | 成人毛片在线免费观看 | 91久久视频 | 亚洲精品99久久久久中文字幕 | 日本视频一区二区三区 | 亚洲精品伊人 | 人妻av一区二区三区 | 青青青在线观看视频 | 大尺度床戏视频 | 99视频免费| 一级一片免费播放 | 新香蕉视频 | 亚洲黄色自拍 | 狠狠gao| 99热3| jizzjizz在线| 美女久久| 污视频91 | 视频黄色免费 | 爱草在线| 精品久久久久久中文字幕 | 蜜桃久久久aaaa成人网一区 | 牛牛av国产一区二区 | 亚洲深夜福利视频 | 日本护士╳╳╳hd少妇 | 香蕉网av | 欧美精品一区二区三区久久久 | 强辱丰满人妻hd中文字幕 | 超碰123| 国产精品久久久久三级 | 欧美国产日韩在线 | 99精品视频播放 |