hashmap遍歷問題,查詢順序並非插入時的順序

2021-09-28 16:55:04 字數 658 閱讀 2666

今天遍歷hashmap讀取資料時,發現我的map物件已經把配置表的所有資料都讀取出來了,但是去遍歷的時候,發現只遍歷了一部分資料。

map_of_cfg_data::iterator iter_begin = map_of_cfg_data_.

begin()

;map_of_cfg_data::iterator iter_end = map_of_cfg_data_.

end();

//這是需要獲取的乙個資料的結構體

timing_data timing_data;

//這裡開始去遍歷

for(iter_begin; iter_begin != iter_end;

++iter_begin)

}

在讀取配置表的時候,map_of_cfg_data_這個hash_map物件存入的鍵值順序分別是int型別的6,7,8,9,10…1,4,5,16,17,18

而在for迴圈裡面遍歷時,第乙個資料卻是5這個鍵值的,然後是18,當我想要判斷7這個鍵所對應的資料內容時,發現一直遍歷不到這個資料,後來才發現到6的時候就已經進入判斷裡面,然後break出去了。

總結:hashmap會先用hash函式處理鍵值,讓其能夠均勻分布到map中,這就會導致map中key的順序並非插入時候的順序。

HashMap遍歷效率問題

對於hashmap中的key和value的遍歷有兩種方法 1.通過hashmap.keyset 方法返回key的集合,通過遍歷該集合的key得到相應的value值。map map new hashmap iterator iter map.keyset iterator while iter.has...

順序表查詢刪除遍歷

輸入格式 第一行輸入乙個正整數 m 1 m 100 代表一共有 m 個操作。接下來輸入 m 行,每行首先輸入乙個整數 t,分別代表以下操作 t 1,代表插入操作,輸入兩個整數 a 和 b 0 a,b 100 表示在 a 的位置上擦入元素 b,如果插入成功輸出success,否則輸出failed。t ...

HashMap集合遍歷

map的遍歷 1,迭代器 一鍵導包 ctrl shift o 先遍歷出key 再通過key找到value set keyset map.keyset 因為map中的key是唯一的 所以可以獲取到key的set集合 iterator it keyset.iterator 獲取迭代器 while it....