1 作用
簡化迭代器的書寫格式。(注意:foreach迴圈的底層還是使用了迭代器遍歷。)
2 適用範圍
如果是實現了iterable介面的物件或者是陣列物件都可以使用foreach迴圈。
3 格式
for(資料型別 變數名 :遍歷的目標)
示例:
1若想遍歷這個集合,可以用迭代器public
static
void
main(string args)
1有沒有更簡潔的辦法呢?可以用foreach迴圈//使用迭代器遍歷集合
2 iterator it =set.iterator();
3while
(it.hasnext())
1這個迴圈應該讀作 -- 「迴圈set中的每乙個元素」(for each element in set)for(string it : set)
4 foreach迴圈的優點在於:相比普通for迴圈來更加簡潔,更加不容易出錯(不必為陣列下標的起始值和終止值擔心)
5 foreach迴圈應該注意的事項:
(1). foreach迴圈底層也是使用了迭代器獲取的,只不過獲取迭代器由jvm完成,不需要我們獲取迭代器而已,所以在使用foreach迴圈變數元素的過程中不准使用集合
物件對集合的元素個數進行修改。
也就是說:
1上面這個呼叫remove方法是錯誤的!for(string it : set)
(2). 普通for迴圈與foreach迴圈的區別:普通for迴圈可以沒有變數的目標,而foreach迴圈一定要有變數的目標。
6 缺點:在對陣列索引進行操作或者集合進行增刪操作時,顯得力不從心,此時不建議使用foreach迴圈
回顧第二點,它的使用範圍,如果現在有乙個map集合,怎麼對它使用foreach迴圈?
通過檢視api文件可得知,map集合沒有實現iterable介面,所以map集合不能直接使用foreach迴圈
但是它有乙個entryset方法(map的迭代方法),它的返回型別是set>:
我們知道set介面下是實現了iterable介面的:
所以我們可以這樣:
1 hashmapmap = new hashmap();最後的最後:這是jdk1.5時才存在的!2 map.put("001","張三");
3 map.put("002","李四");
4 map.put("003","王五");
5 map.put("004","趙六");
6 set> entrys =map.entryset();
7for(map.entryentry : entrys)
foreach迴圈(增強for迴圈)
1 foreach迴圈本質上是迭代器遍歷,簡化了迭代器遍歷的書寫方式 2 適用於實現了iterable介面的物件或者陣列物件 3 格式為 for 資料型別 變數名 迴圈目標 foreach迴圈 for string it set foreach缺點 1 不能對集合進行增刪操作 foreach迴圈底層...
增強的for迴圈(或foreach)
增強的for迴圈 也稱為foreach迴圈 不用下標變數,順序的訪問整個陣列。不能以其它順序訪問陣列,或者改變陣列的元素。for elementtype element arrayrefvar emement必須宣告為與陣列中元素同樣的資料型別 增強for迴圈僅僅能用在陣列和實現iterator介面...
集合 三 增強for迴圈 for each
格式 for 元素的資料型別 變數 collection集合 or 陣列 增強for迴圈 底層使用的也是迭代器,使用for迴圈的格式,簡化了迭代器的書寫 collectionextends iterator 所有的單列集合都可以使用增強for public inte ce iterator實現這個介...