ThreadLocal用開放定址法解決Hash衝突

2021-10-20 03:01:21 字數 573 閱讀 2219

1.鏈式位址法

2.開放定址法

3.再hash法

4.建立公共溢位池

等等為什麼不用3和4?

4方法浪費記憶體,3增加了演算法的複雜度,不推薦。其實我也不清楚。

鏈式位址法(hashmap)

優點:處理衝突簡單,且無堆積現象,平均查詢長度短;

鍊錶中的結點是動態申請的,適合構造表不能確定長度的情況;

相對而言,拉鍊法的指標域可以忽略不計,因此較開放位址法更加節省空間。

插入結點應該在鏈首,刪除結點比較方便,只需調整指標而不需要對其他衝突元素作調整。

開放位址法:

缺點:容易產生堆積問題;

不適於大規模的資料儲存;

結點規模很大時會浪費很多空間;

雜湊函式的設計對衝突會有很大的影響;

插入時可能會出現多次衝突的現象,刪除的元素是多個衝突元素中的乙個,需要對後面的元素作處理,實現較複雜;

優點:當節點規模較少,或者裝載因子較少的時候,使用開發定址較為節省空間,如果將鏈式表的指標用於擴大雜湊表的規模時,可使得裝載因子變小從而減少了開放定址中的衝突,從而提高平均查詢效率。

**:

ThreadLocal是什麼?怎麼用?

threadlocal用於儲存某個執行緒共享變數 對於同乙個static threadlocal,不同執行緒只能從中get,set,remove自己的變數,而不會影響其他執行緒的變數。簡單的使用 public class threadlocaltestpublic class mytest exte...

用ThreadLocal管理事務

1 適用場景 乙個service,操作兩個dao,要求兩個dao為同乙個事務,要麼全成功,要麼全失敗。dbutils,使用threadlocal 1 public class dbutils 910 public static datasource getddatasource 11 14publi...

手機遊戲裡用什麼方法尋路

尋路演算法在遊戲中大量應用,在pc遊戲裡,更是隨處可見。就比如星際爭霸,紅警這些超爽遊戲中,用滑鼠隨便點乙個地方,部隊就會繞過一些障礙,並以最短的路徑到達目的地。那麼在手機遊戲中怎樣達到這種效果呢?這正是本文要討論的問題。這篇文章將首先討論應該怎樣實現,而不會給出具體 當然,在稍後的文章裡,我會對 ...