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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package com.heima.code;
/*
高级for循环
格式:
for(数据类型  变量名: 被遍历的集合(Collection)或者数组)
{

}
对集合进行遍历。
只能获取集合元素,但是不能对集合进行操作。

迭代器除了遍历,还可以进行remove集合中元素的动作。
如果是用ListIterator,还可以在遍历过程中对集合进行增删改查的动作。

传统for循环和高级for有什么区别呢?
高级for有一个局限性,必须与被遍历的目标。
建议在遍历数组的时候,还是希望是用传统的for.因为传统for可以定义脚标。

* */
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class ForEachDemo01 {
        public static void main(String[] args) {
    ArrayList<String> al = new ArrayList<String>();
    al.add("abc01");
    al.add("abc02");
    al.add("abc03");
   
   /* Iterator<String> it = al.iterator();
    while(it.hasNext()){
            System.out.println(it.next());
    }*/
    for(String s : al){
            //s = "kk";
            System.out.println(s);
    }
    int[] arr = {3,5,1};
    for(int x=0;x<arr.length;x++){
            System.out.println(arr[x]);
    }
    for(int i : arr){
            System.out.println("i:"+i);
    }
   
    HashMap<Integer,String> hm = new HashMap<Integer,String>();
   
    hm.put(1, "a");
    hm.put(2, "b");
    hm.put(3, "c");
   
    Set<Integer> keySet = hm.keySet();
    for(Integer i : keySet){
            System.out.println(i+"::"+hm.get(i));
    }
   
  /*  Set<Map.Entry<Integer,String>> entrySet = hm.entrySet();
    for(Map.Entry<Integer, String> me : entrySet){
           
    }*/
    for(Map.Entry<Integer, String> me : hm.entrySet()){
            System.out.println(me.getKey()+"----"+me.getValue());
    }
        }

}

6 个回复

倒序浏览
一脸懵逼……才基础第五天
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
kevin0 发表于 2016-11-27 23:49
一脸懵逼……才基础第五天

后面有讲到的
回复 使用道具 举报
回复 使用道具 举报
本帖最后由 河道里抓鱼 于 2016-11-29 01:48 编辑

有个问题,视频里的day18的第7段解释为什么Entry前面的map.可以省略,解释原因是这里的Entry是HashMap里的内部类(实现了Map里的的那个Entry).那么我想问的是,可以省略难道原因不是import java.util.Map.Entry;这一句导入语句吗?如果是省略前缀的Entry代表直接引用,而不是父类引用.那么前面不该加上HashMap.吗?所以请问是不是说错了,急求解答!!!!!
package com.heima.map;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

public class Demo3_Iterator {

        /**
         * Map集合的第二种迭代,根据键值对对象,获取键和值
         *  A:键值对对象找键和值思路:
                * 获取所有键值对对象的集合
                * 遍历键值对对象的集合,获取到每一个键值对对象
                * 根据键值对对象找键和值
         */
        public static void main(String[] args) {
                Map<String, Integer> map = new HashMap<>();
                map.put("张三", 23);
                map.put("李四", 24);
                map.put("王五", 25);
                map.put("赵六", 26);
               
                //Map.Entry说明Entry是Map的内部接口,将键和值封装成了Entry对象,并存储在Set集合中
                /*Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
                //获取每一个对象
                Iterator<Map.Entry<String, Integer>> it = entrySet.iterator();
                while(it.hasNext()) {
                        //获取每一个Entry对象
                        Map.Entry<String, Integer> en = it.next();        //父类引用指向子类对象
                        //Entry<String, Integer> en = it.next();        //直接获取的是子类对象
                        String key = en.getKey();                                        //根据键值对对象获取键
                        Integer value = en.getValue();                                //根据键值对对象获取值
                        System.out.println(key + "=" + value);
                }*/
               
                for(Entry<String, Integer> en : map.entrySet()) {
                        System.out.println(en.getKey() + "=" + en.getValue());
                }
        }

}
回复 使用道具 举报
河道里抓鱼 发表于 2016-11-29 01:38
有个问题,视频里的day18的第7段解释为什么Entry前面的map.可以省略,解释原因是这里的Entry是HashMap里的内 ...

你好,我查看了毕向东老师和最近官网的视频的day18--07里没有找到那样的解释。
我查看一些资料后,给出的解释是Entry是Map的一个内部接口,HashMap类也实现了Map类,
在程序 for(Entry<Integer, String> me : hm.entrySet())的里面,其实还是引用Map中的Entry的去实现的。因为Entry在HashMap中是不可见的,它是在Map中已经被封装好的。
回复 使用道具 举报
http://blog.csdn.net/ddplayer12/article/details/17142491
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马