黑马程序员技术交流社区

标题: 对HashMap<K,V>集合迭代的问题 [打印本页]

作者: 梵天的梦    时间: 2014-2-23 20:36
标题: 对HashMap<K,V>集合迭代的问题

  1. HashMap<String,Integer> map = new HashMap<String, Integer>();
  2.                 map.put("aa", 23);
  3.                 map.put("bb", 24);
  4.                 map.put("cc", 25);
  5.                
  6.                 Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
  7.                 for(Map.Entry<String, Integer> entry : entrySet){
复制代码




作者: 梵天的梦    时间: 2014-2-23 20:40
在for循环里面entry的类型定义为Map.Entry<String, Integer>,为什么不是Set<Map.Entry<String, Integer>> 有些不理解。
我是这么理解,entrySet里面的每一个元素都是Map.Entry<String, Integer>类型,所以迭代时entry的类型为Map.Entry<String, Integer>,不知道这么理解对不对?
                       
作者: 徐青松    时间: 2014-2-23 20:55
梵天的梦 发表于 2014-2-23 20:40
在for循环里面entry的类型定义为Map.Entry,为什么不是Set 有些不理解。
我是这么理解,entrySet里面的每一 ...

给你一个对比你就明白了:public class JiCheng {
        public static void main(String args[]) {
                String[] strs=new String[]{"a","b","c","d","e","f","g"};
                for(String st :strs)
                {
                        String newStr="new_"+st;
                        System.out.println(newStr);
                }
        }
}
这里的String是数组,你可以联想成Set集合,因为String[]数组里存的都是String类型,所以使用增强for( )语句时,里面传参为(String(即是集合里存的的类型) st(变量名) :strs(集合变量名))这样的格式,对st进行操作,就是对集合里的单个元素进行操作。懂了吧?
作者: zjf    时间: 2014-2-23 21:34
增强for的格式
for(数据类型 变量 : 集合或者数组){  }
for后面跟的第一个就是数据类型,也就是<>泛型里限定的类型
      Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
      里面的<Map.Entry<String, Integer>> 就是限定的数据类型, 也就是说明Setj里面装的就是这种类型的对象,
如: ArrayList <String>al = new ArrayList<String>();
                al.add("abc1");
                al.add("abc2");
                for( String str : al){}
作者: 梵天的梦    时间: 2014-2-24 09:46
徐青松 发表于 2014-2-23 20:55
给你一个对比你就明白了:public class JiCheng {
        public static void main(String args[]) {
                String[ ...

这个例子真的很恰当,谢谢明白了
作者: volvoxc    时间: 2014-2-24 22:08
首先确定高级for循环的格式,for后面的括号里必须明确要迭代的数据类型,然后才是变量名,冒号,要迭代的集合。这个例子中的set集合用到了泛型,泛型的意思就是说这个集合里装的是什么数据类型的对象。所以,对set进行迭代的话,for里面的数据类型写set后泛型限定里的类型肯定没错。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2