高效的運用MAP類實現「比較」的功能

2021-06-19 12:48:25 字數 1049 閱讀 8981

問題:

a表有乙個字段

mm唯一確定一條資料而且也有字段

cc有資料,

b表也存在

mm欄位也有

cc欄位,但是沒有資料,目的:希望將b表的

cc欄位和a表的

cc欄位同步

策略一:查詢b

表的資料,逐一遍歷每條資料,根據b表的

mm欄位連線到查詢a表的

mm欄位,就知道a表的

cc欄位,然後將

cc欄位的值給b表的

cc欄位,然後更新資料庫

策略二:

首先查詢

a表的所有資料,全部放在乙個陣列(或者鍊錶)中,查詢

b表的資料,然後根據b表的

mm值與陣列一一比對,如果是一致就退出迴圈,然後給b表的

cc欄位賦值,更新資料庫

策略三:

首先查詢

a表的所有資料,然後將查詢的值存放在乙個

map物件中

map按照這種格式存放資料,然後查詢

b表的資料,遍歷

b表的每個資料,判斷

map表中是否存在

key為

mm的資料,如果存在則取出這個值給b表

分析:策略一:這種方式是最簡單也是最麻煩的,因為每次都需要查詢資料庫,然後在經歷兩次迴圈,最後更新資料庫,在「海量」資料中這種操作是致命的,可能會導致系統崩潰,不推薦使用這種方式

策略二:這種方式比第一種方式好很多,因為他減少了對資料庫的查詢,而且將查詢的內容放在快取中,然後迴圈比較,將查詢到的結果同步到資料庫

b中,但是這裡面卻依然是含有兩層迴圈,效率依然不高

策略三:這種方法跟第一種方法類似,第一次也是查詢

a表的所有資料

,將查詢的結果存放在

hashmap

中,然後查詢

b表的資料,逐一遍歷每項資料,判斷

hashmap

中是否存在

key為

mm的值,如果有就將

value賦給b

表查詢的物件,這樣就只利用了一層迴圈,就能夠找到結果賦給

b表,效率更高

Map實現類的比較

map實現類的比較 hashmap的存入順序和輸出順序無關。key值物件 hashcode和equals方法 linkedhashmap則保留了鍵值對的存入順序,一般不會使用訪問順序。key值物件 hashcode和equals方法 linkedhashmap雖然增加了時間和空間上的開銷,但是通過維...

Collection和Map實現類的比較

容器和map 子介面實現類 底層實現 儲存特點 collection list arraylist 陣列有序,可重 linkedlist 雙向鍊錶 有序,可重 vector 陣列有序,可重 sethashsethashset hashmap 陣列 鍊錶 紅黑樹 無序,不可重 treeset tree...

Map的高效遍歷

quote b 場景 b 偶爾生產環境的某台機器cpu使用率很高,經過定位發現是有乙個大的hashmap hashmap裡面存放了大量資料,比如1w條 做迴圈引起的。quote 中採用了如下的遍歷 for iterator ite map.keyset iterator ite.hasnext 通過...