java map删除key_根据key删除Map集合中的key-value映射

一:在遍历Map时是不可以删除key-value映射的,如果根据key删除,如下:

public static void main(String[] args) {

Map paramsMap = getMap();

deleteKeyError(paramsMap);

}

private static void deleteKeyError(Map paramsMap){

for(Map.Entry entry:paramsMap.entrySet()){

String key = entry.getKey();

if(ID.equals(key)){

paramsMap.remove(key);

}

}

}

则会报错:并发修改异常,意思就是正在对map进行遍历的过程中不能删除map中的key-value

Exception in thread "main"java.util.ConcurrentModificationException

at java.util.HashMap$HashIterator.nextNode(Unknown Source)

at java.util.HashMap$EntryIterator.next(Unknown Source)

at java.util.HashMap$EntryIterator.next(Unknown Source)

at com.hlcui.test.TestIterator.deleteKeyError(TestIterator.java:26)

at com.hlcui.test.TestIterator.main(TestIterator.java:22)

但是我们可以使用迭代器删除,如下:

public static void main(String[] args) {

Map paramsMap = getMap();

deleteKeyOfMap(paramsMap);

}

private static void deleteKeyOfMap(Map paramsMap){

System.out.println("=====删除前=====\n"+paramsMap);

Iterator iter = paramsMap.keySet().iterator();

while(iter.hasNext()){

String key = iter.next();

if(ID.equals(key)){

iter.remove();

}

}

System.out.println("=====删除后=====\n"+paramsMap);

}

则执行正常,可以根据key删除map中key-value映射

所以如果想根据key删除map集合中的key-value映射,可以使用迭代器的方式!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值