JDK5.0以后,为了简化简单的对集合或数组遍历的书写,定义了一个新语句,高级for语句,成为foreach循环。
foreach语句:
格式:
for(遍历出的元素变量类型 遍历出的元素变量名称 :被遍历的目标容器){}
传统for和高级for的区别?
传统for可以完成对语句执行很多次,因为可以定义控制循环的增量和条件。
高级for是一种简化形式。
它必须有被遍历的目标容器。如数组,Collection单列集合。
对数数组的遍历如果仅仅是获取数组中的元素,可以使用高级for。
如果要对数组的角标进行操作建议使用传统for。
例如:
List<String> list =new ArrayList<String>();
list.add("abc1");
list.add("abc2");
list.add("abc3");
for(String s : list){ //可以很大程度简化书写。
System.out.println(s);
}
------此处等价于迭代器
Iterator<String> it = list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
注意:可以使用高级for遍历map集合吗?
不能直接用,但是可以将map转成单列的set,就可以用了。因为map是双列,set是单列。
Map<Integer,String> map = new HashMap<Integer,String>();
map.put(1,"z");
map.put(2,"w");
for(Integer key : map.keySet()){
String value = map.get(key);
System.out.println(key+"::"+value);
}
for(Map.Entry<Integer,String> me : map.entrySet()){
Integer key = me.getKey();
String value = me.getValue();
System.out.println(key+":"+value);
}