获取Map中元素

1..对对象的集合(Collection)和键值对集合(Map)都支持吗?
答:不支持的,,因为map集合里面没有迭代器,,,凡是支持迭代器的集合他们都支持高级for,,高级for是迭代器的简写形式

map集合里面为什么没有迭代器:
接口 Collection<E>他里面有迭代器,,Collection接口继承了接口 Iterable<T>,,Iterable<T>里面封装了iterator() 方法返回一个迭代器,,比如出现接口 Collection2<E>继承了接口 Iterable<T>时这个接口 Collection2<E>就具备了迭代方法,,map集合没有实现接口 Iterable<T>,所以map里面没有迭代器



代码:
  Map<String,Integer> map = new HashMap<String,Integer>();
  map.put("aa", 1);
  map.put("bb", 2);
  
  Set<Map.Entry<String, Integer>> set = map.entrySet();
  for(Map.Entry<String, Integer> me : set){
   System.out.println(me.getKey() + "=" + me.getValue());
  }
                HashMap<Integer,String> hm = new HashMap<Integer,String>();

                hm.put(1,"a");
                hm.put(2,"b");
                hm.put(3,"c");
                
                Set<Map.Entry<Integer,String>> set=hm.entrySet();  都要转成set集合,因为map集合不支持迭代

                //这里不能放map集合,,,,放set集合,,,或者for (Map.Entry<Integer, String> entry : set) {,,这里面的类型是:set集合里面存什么类型那么高级for里面就存什么类                         // 型,,比如set里面是Map.Entry类型那么for里面就是Map.Entry
                for (Entry<Integer, String> entry : set) {                
                        Integer key=entry.getKey();
                        String string=entry.getValue();
                        System.out.println(key+"   "+string);
                        
                }

或者这样遍历

                Set<Integer> set=hm.keySet();
                
                for (Integer i : set) {
                        System.out.println(i+"      "+hm.get(i));
                }

2...增强的for循环对集合的增删改查操作有限制吗?

答;增强的for循环对集合进行遍历,只能获取集合元素,但是不能对集合进行操作他只能获取集合中的元素,。只能对集合中的元素进行取出,,不能做修改动作,所以集合中的数据没有改变,,而迭代器可以取出修改,迭代器除了遍历,还可以进行remove集合中元素的动作。迭代器操作完以后集合变了,,,,
如果使用ListIterator,还可以在遍历过程中对集合进行增删改查的动作。



3... 还有那么传统的for循环与增强的for循环有什么大的区别吗?

答:有的

高级for有一个局限性,必须有被遍历的目标,比如我想要把"aa"打印100次,,,高级for就做不了就得用传统for,,,,

建议在遍历数组的时候,还是希望使用传统for。因为传统for可以定义脚标。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值