Map集合遍歷過程呼叫remove方法引起的問題

2021-06-29 03:32:28 字數 813 閱讀 7643

set

set2 = map2.keyset();

for(integer key :set2)

system.out

.println(map2);

執行後丟擲concurrentmodificationexception。

換用迭代器,一樣拋異常:

set

set2 = map2.keyset();

iteratorit = set2.iterator();

while(it.hasnext())

system.out

.println(map2);

可見,在使用這兩種方法對map集合遍歷過程中,不能對其進行直接的增刪。

其實,利用迭代器本身的增刪功能是可以的:

while(it.hasnext())

那麼,可以獲取要刪除的鍵,用另乙個容器儲存,然後在遍歷那個容器的時候對map進行remove操作即可。

//用乙個容器來獲取需要刪除的鍵

list

<

integer

>

list

=new arraylist<

integer

>();

for(integer key :set2)

//遍歷list,在遍歷過程中刪除map中的鍵值對

for(integer key:list)

system.out.println(map2);

遍歷map集合

map集合的遍歷 mapmap new hashmap map.put 小明 小紅 map.put 小王 小麗 map.put 小李 小美 map.put 小吳 小娜 獲得鍵值對 物件的集合 set set map.entryset for map.entryme set 結果小明 小紅 小李 小美...

遍歷Map集合方式

最常規的一種遍歷方法,最常規就是最常用的,雖然不複雜,但很重要,這是我們最熟悉的,就不多說了!public static void work mapmap 利用keyset進行遍歷,它的優點在於可以根據你所想要的key值得到你想要的 values,更具靈活性!public static void w...

map集合遍歷方式

常用方法 hashmap hm new hashmap 通過制定鍵替換鍵所指向的值 hm.replace 2,wxz system.out.println hm.get 2 清空 hm.clear system.out.println hm.size 判斷是否為空 system.out.printl...