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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sd6628611 中级黑马   /  2015-11-15 21:41  /  472 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

高级for循环

格式:for(数据类型 变量名 : 被遍历的集合(Collection)或者数组) { }

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

迭代器除了遍历,还可以进行remove集合中元素的动作。

如果是用ListIterator,还可以在遍历过程中对集合进行增删改查的动作。

传统for和高级for有什么区别呢?

高级for有一个局限性。必须有被遍历的目标。

建议在遍历数组的时候,还是希望是用传统for。因为传统for可以定义脚标。


class ForEachDemo

{ public static void main(String[] args)

{ ArrayList<String> al = new ArrayList<String>();

al.add("abc1");

al.add("abc2");

al.add("abc3");

for(String s : al)

{

//s = "kk";

System.out.println(s);

}

System.out.println(al);

/*

Iterator<String> it = al.iterator();

while(it.hasNext())

{

System.out.println(it.next()); }  */

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()); }

}

}

4 个回复

倒序浏览
谢谢分享
回复 使用道具 举报
高级for在遍历集合时,不适合删除和增加元素
回复 使用道具 举报
传统的for不适合对象比较复杂,存放元素过多的集合操作。就算你是数组,存放简单元素,存取速度也比不过HaseSet ,它在读取或插入元素几乎不用不到遍历,直接比较内存地址值,在老师讲课故意使地址值相同除外。
回复 使用道具 举报
厉害啊!很全面,表示佩服,必须收藏
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马