增強for循環:
格式:for(變量數據類型 要遍歷的變量 :元素所在數組(集合)名稱)
也即 for(Type element: array或collection)
使用foreach遍歷集合:
只能獲取集合中的元素,不能對集合進行操作。
而迭代器Iterator除了可以遍歷,還可以對集合中的元素遍歷時進行remove操作。
如果使用ListIterator還可以在遍歷過程中進行增刪改查的動作。
//例子1:
import java.util.*; class Foreach { public static<T> void sop(T t) { System.out.println(t); } public static void main(String[] args) { ArrayList<String> al = new ArrayList<String>(); al.add("abc"); al.add("bcd"); al.add("kef"); //1、傳統for循環遍歷(按角標獲取) for(int i=0;i<al.size();i++) { sop(al.get(i)); } sop("\n"); //2、for循環遍歷(迭代器) for(Iterator<String> it2 = al.iterator();it2.hasNext();) { sop(it2.next()); } sop("\n"); /* //for循環遍歷(vector集合的枚舉) for(Enumeration<String> en = al.elements();en.hasMoreElements();) { sop(en.nextElement()); } sop("\n"); */ //3、for循環增強遍歷 for(String s: al) { sop(s); } } }
在Map集合中使用for高級遍歷(foreach)
//例子2:
import java.util.*; class Foreach2 { public static void sop(Object obj) { System.out.println(obj); } public static void main(String[] args) { Map<String,Integer> hm = new HashMap<String,Integer>(); hm.put("a",1); hm.put("b",2); hm.put("c",3); Set<String> keyset = hm.keySet(); Set<Map.Entry<String,Integer>> entryset = hm.entrySet(); //轉化為Set集合后,直接用迭代器獲取元素(方法:keySet()) Iterator<String> it1 = keyset.iterator(); while(it1.hasNext()) { String str = it1.next(); Integer in = hm.get(str); sop("str:"+str+" "+"in:"+in); } sop("---------------------"); //轉化為Set集合后,用for循環高級遍歷獲取元素 for(String str: keyset) { sop("str:"+str+"::"+"in:"+hm.get(str)); } sop("---------------------"); //轉化為Set集合后,直接用迭代器獲取元素(方法:entrySet()) Iterator<Map.Entry<String,Integer>> it2 = entryset.iterator(); while(it2.hasNext()) { Map.Entry<String,Integer> me = it2.next(); String str = me.getKey(); Integer in = me.getValue(); sop("str:"+str+" "+"in:"+in); } sop("---------------------"); //轉化為Set集合后,用for循環高級遍歷獲取元素 for(Map.Entry<String,Integer> me: entryset) { sop("str:"+me.getKey()+"....."+"in:"+me.getValue()); } } }
