1. hashmap是以什麼方式存儲數據 arraylist又是以什麼方式存儲數據
hashmap 就是表,說通俗點就是一個可以理解為 兩列多行 的表格,第一列中存儲索引或者起標示作用的對象,第二列存儲我們實際要用的對象,當我們需要第二列中某個對象時,就去找這個對象的索引(就是對應它的第一列的對象),arraylist 內部是以數組來儲存數據的,它是一個「長度可變」的數組
2. HashMap如何存儲數據的
對key進行hash,未發生碰撞,直接存儲,發生碰撞,碰撞數小於8,鏈表存儲,大於8,紅黑樹存儲。
參考:
飛升之路 Java學習筆記-HashMap原理
3. Java的HashMap存儲資料庫數據的問題
HashMap map = new HashMap<String,ArrayLisy<T>>();
T就是該鏈表的數據類型
增加一條記錄
ArrayLisy<T> list = new ArrayLisy<T>();
map.put("item1",list);
4. 存放到hashMap當中的數據什麼時候會消失
兩種情況,,
1,調用remove 方法清除後消失(數據從HashMap對象中消失)
2,該HashMap對象失去引用後(HashMap對象消失,)
兩種情況HashMap中數據若存在引用則只會從HashMap對象中消失,,但數據仍在內存中
5. 為什麼HashMap取出的數據順序和存儲時的順
// //////////////測試數據///////////////
if (tabTitle != null && tabTitle.size() > 0) {
tabTitle.clear();
}
for(int i = 0; i < 5; i++) {
List<SeatTime> list = new ArrayList<SeatTime>();
for (int k = 0; k < 30; k++) {
SeatTime st = new SeatTime();
st.setTime("10:00_" + k);
st.setDatetime("2014-11-18_" + k);
st.setDatedesc("11月18日 明天 10:30_" + k);
if (k % 3 == 0) {
st.setState("1");
} else {
st.setState("0");
}
list.add(st);
}
Config.Log("zrck", "i========"+i);
timeMap.put("日期" + i, list);
}
//獲取map里的key值
Iterator it = timeMap.entrySet().iterator();
while (it.hasNext()) {
Entry entry = (Entry) it.next();
tabTitle.add(entry.getKey().toString().replaceAll(" ",""));
Config.Log("zrck", "============"+entry.getKey().toString());
}
測試後的結果
輸入時按順序插入的,但是取出時數據就亂套了,查了下資料發現,hashmap是散列映射,也就是它不會記錄數據存儲時的順序,也就無法保證你取出時的順序,為了解決這個問題,很簡單採用LinkedHashMap或者是TreeMap即可,當然會造成一些額外開銷,但並不影響什麼。
6. 往hashMap里存儲一萬條數據會發生什麼!
一般來講哈希查找方法與數據量無關,在不碰撞的情況下為o(1)。但是真實情況不會這么理想,最壞情況也可能會達到o(N)級,所以我覺得影響哈希表檢索效率的關鍵因素是哈希函數的選取,應盡量避免碰撞產生。
7. java中HashMap的數據怎麼放到資料庫中
在資料庫中建立兩個欄位、一個欄位存放MAP 中的key 一個欄位存放value
直接存入是不行了、只能分別取出之後對應存放、
8. 有一百萬個數據,以hashmap形式存儲,現在需要查一條數據,大致需要多久
如果是遍歷查找,那就挨著排的找判斷,那就看數據在第幾條了,在最後一條,得一分鍾吧
9. C++ Map中的數據存儲方式是什麼Map和HashMap有什麼區別
你要先去了解一下HASH演算法
相對MAP來說,HASHMAP具有更高的查詢速度。
舉個簡單的例子來說
MAP中儲存為順序儲存,也就是一個接著一個的儲存
如一個MAP中存儲
1
3
4
三個元素
則,MAP中第一個元素為1,第二個為3,第三個為4
如果想從MAP中查找元素4,則必須從開始進行便利,則必須比較三次。
而HASHMAP中,開始儲存的時候,就將即將儲存的元素用一個自定義函數將他轉變後,存到相應位置