A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丸子 中级黑马   /  2014-9-2 18:45  /  1351 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 丸子 于 2014-9-2 19:42 编辑

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Excise6Map {

        /**
         * 写个方法,通过传入的map集合中某个元素的value值,删除这个元素。
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                Map<Integer,String> map=new HashMap<Integer,String>();
                map.put(1, "aaaa");
                map.put(2, "bbbb");
                map.put(3, "cccc");
                String x="aaaa";
//                if(map.containsKey(1))
//                        map.remove(1);

                System.out.println(map);
                Set<Integer> key=map.keySet();
                for(Integer i:key)
                        if(x==map.get(i))
                                map.remove(i);
                System.out.println(map);
                                
        }

}

5 个回复

倒序浏览
有误,如何解决及错误原因?
回复 使用道具 举报
丸子 发表于 2014-9-2 18:47
有误,如何解决及错误原因?

集合在迭代过程中是不允许改变集合中的元素的,这是集合采用了快速失败机制的原因。
解决办法:
可以定义一个数组或集合保存包含value值的key,迭代完成后,遍历保存key的数组或集合来删除map的key-value对
回复 使用道具 举报
java_dream 发表于 2014-9-2 19:36
集合在迭代过程中是不允许改变集合中的元素的,这是集合采用了快速失败机制的原因。
解决办法:
可以定义 ...

多谢!高手
回复 使用道具 举报
{:2_31:}{:2_31:}{:2_31:}{:2_31:}{:2_31:}{:2_31:}
回复 使用道具 举报
MeryStyle 来自手机 中级黑马 2014-9-2 22:54:17
地板
藤椅 高手啊。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马