日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

for,foreach,iterator的用法和区别

發布時間:2023/12/1 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 for,foreach,iterator的用法和区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
相同點: ? 三個都可以用來遍歷數組和集合

不同點:1.形式差別?
? ? ? ? ? ? ? ? ?for的形式是
? ? ? ? ? ? ? ? for(int i=0;i<arr.size();i++){...}

? ? ? ? ? ? ? ? ? foreach的形式是
? ? ? ? ? ? ? ? for(int i:arr){...}

? ? ? ? ? ? ? ? ? iterator的形式是
? ? ? ? ? ? ? ?Iterator it = arr.iterator();
? ? ? ? ? ? ? ?while(it.hasNext()){ object o =it.next(); ...}


? ? ? ? ? ? ? ? ?2.條件差別
? ? ? ? ? ? ? ? ? ?for需要知道集合或數組的大小,而且需要是有序的,不然無法遍歷;
? ? ? ? ? ? ? ? ? ?foreach和iterator都不需要知道集合或數組的大小,他們都是得到集合內的每個元素然后進行處理;
? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ?3.多態差別
? ? ? ? ? ? ? ? ?for和foreach都需要先知道集合的類型,甚至是集合內元素的類型,即需要訪問內部的成員,不能實現態;
? ? ? ? ? ? ? ? ? ?iterator是一個接口類型,他不關心集合或者數組的類型,而且他還能隨時修改和刪除集合的元素,舉個例 ? ? ? ? ? ? ? ? ? ? 子:public void display(Iterator<object> it){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?while(it.hasNext()){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? system.out.print(it.next()+"");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?當我們需要遍歷不同的集合時,我們只需要傳遞集合的iterator(如arr.iterator())看懂了吧,這就 ? ? ? ? ? ? ? ? ? ? ? ? 是iterator的好處,他不包含任何有關他所遍歷的序列的類型信息,能夠將遍歷序列的操作與序列底層的 ? ? ? ? ? ? ? ? ? ? ? 結構分離。迭代器統一了對容器的訪問方式。這也是接口的解耦的最好體現。


? ? ? ? ? ? ? ? ? ? 4.用法差別
? ? ? ? ? ? ? ? ? ? ? ?for循環一般用來處理比較簡單的有序的,可預知大小的集合或數組
? ? ? ? ? ? ? ? ? ? ? ?foreach可用于遍歷任何集合或數組,而且操作簡單易懂,他唯一的不好就是需要了解集合內部類型
? ? ? ? ? ? ? ? ? ? ? ?iterator是最強大的,他可以隨時修改或者刪除集合內部的元素,并且是在不需要知道元素和集合的類 ? 型的情況下進行的(原因可參考第三點:多態差別),當你需要對不同的容器實現同樣的遍歷方式時,迭代器是最好的選擇!
? ? ? ? ? 轉載請注明出處:http://blog.csdn.net/iamkila

轉載于:https://www.cnblogs.com/baiduligang/p/4247668.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的for,foreach,iterator的用法和区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。