高级for有一个局限性。必须有被遍历的目标。建议在遍历数组的时候,还是用传统for,因为传统for可以定义脚标。
代码示例:
package tan; //增强for循环 import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.Set; public class ForEachDemo { public static void main(String[] args) { ArrayList<String> al = new ArrayList<String>(); al.add("abc1"); al.add("abc2"); al.add("abc3"); //简化了书写,但底层实现仍是迭代器, //局限性:只能对集合中的元素取出而不能做修改动作,而迭代器可以删除(Remove) //如果是列表迭代器,则增删改查都是可以的 for(String s:al){ System.out.println(s); } /* Iterator<String> it = al.iterator(); while(it.hasNext()) { System.out.println(it.next()); } */ /*传统for和高级for有什么区别呢? 高级for有一个局限性。必须有被遍历的目标。 建议在遍历数组的时候,还是希望是用传统for。因为传统for可以定义脚标。*/ int[] arr = {3,5,1}; System.out.println("一般for循环"); for(int x=0; x<arr.length; x++) { System.out.println(arr[x]); } System.out.println("增强for循环"); for(int i : arr) { System.out.println("i:"+i); } System.out.println("keySet()方式取出集合中的元素"); HashMap<Integer, String> hm=new HashMap<Integer,String>(); hm.put(1, "A"); hm.put(2, "B"); hm.put(3, "C"); //keySet()返回Map中所包含键的Set视图。删除Set中的元素还将删除Map中相应原映射。 Set<Integer>keySet=hm.keySet(); for(Integer i:keySet){ System.out.println(i+":"+hm.get(i)); } //EnterySet()返回Map中所包含映射的Set视图。Set中的每个元素都是一个Map.Entry对象, //可以使用getKey()和getValue()方法访问后者的键元素和值元素。 System.out.println("entrySet()方式取出集合中的元素"); // 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()); } } }
原文:http://blog.csdn.net/u010834071/article/details/38142519