java 遍历集合的时候对集合进行操作

例如我有一个HashMap类型的集合for(inti:map.keySet()){map.remove(i);}这样对集合进行操作的时候就会出现异常请问怎么样才能在遍历集... 例如我有一个HashMap类型的集合
for(int i : map.keySet())
{
map.remove(i);

}
这样对集合进行操作的时候就会出现异常
请问怎么样才能在遍历集合时候进行操作
因为我要进行一些元素的删除或者操作。
展开
 我来答
不倒翁_白痴
2013-01-01 · TA获得超过283个赞
知道小有建树答主
回答量:186
采纳率:0%
帮助的人:133万
展开全部
这个for是调用了集合上的iterator,则个时候不能对集合进行操作,操作是不安全的,原因很简单:
如果集合元素的个数发生变化,会造成原来的iterator发生越界遍历,或者遍历到不正确的元素,所以,建议你不要再遍历的时候删除或者增加元素,而是将要删除的元素的引用保存下来,然后最后一起删除
dgqjava
2013-01-01 · TA获得超过265个赞
知道小有建树答主
回答量:147
采纳率:100%
帮助的人:59.2万
展开全部
遍历的时候对集合进行并发操作本来就是不安全的, 如果一定要这么做就参考java api, 里面提供了线程安全的集合, 可以在遍历的同时就行修改操作
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
那十无忧
2013-01-02 · 超过17用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:32.2万
展开全部
在你遍历的时候可以用一个 Set 暂存你要删除的 key,遍历完成之后再按照这个 Set 中的key进行删除。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6333abd
2013-01-01
知道答主
回答量:26
采纳率:0%
帮助的人:8.6万
展开全部
Map map=new HashMap();
map.put("1", "one");
map.put("2","two");
for(Object obj:map.keySet()){
System.out.println( map.get(obj));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
atgfynkpdc
2017-12-19 · 超过10用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:18.2万
展开全部
Iterator<String> item = cacheManager.getCaches().iterator();
while (item.hasNext()) {
    String str = item.next();
    if (str.length()==0) {
        item.remove();
    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式