for,foreach,iterator的用法和区别
不同點(diǎn):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需要知道集合或數(shù)組的大小,而且需要是有序的,不然無(wú)法遍歷;
? ? ? ? ? ? ? ? ? ?foreach和iterator都不需要知道集合或數(shù)組的大小,他們都是得到集合內(nèi)的每個(gè)元素然后進(jìn)行處理;
? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ?3.多態(tài)差別
? ? ? ? ? ? ? ? ?for和foreach都需要先知道集合的類型,甚至是集合內(nèi)元素的類型,即需要訪問(wèn)內(nèi)部的成員,不能實(shí)現(xiàn)態(tài);
? ? ? ? ? ? ? ? ? ?iterator是一個(gè)接口類型,他不關(guān)心集合或者數(shù)組的類型,而且他還能隨時(shí)修改和刪除集合的元素,舉個(gè)例 ? ? ? ? ? ? ? ? ? ? 子:public void display(Iterator<object> it){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?while(it.hasNext()){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? system.out.print(it.next()+"");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?當(dāng)我們需要遍歷不同的集合時(shí),我們只需要傳遞集合的iterator(如arr.iterator())看懂了吧,這就 ? ? ? ? ? ? ? ? ? ? ? ? 是iterator的好處,他不包含任何有關(guān)他所遍歷的序列的類型信息,能夠?qū)⒈闅v序列的操作與序列底層的 ? ? ? ? ? ? ? ? ? ? ? 結(jié)構(gòu)分離。迭代器統(tǒng)一了對(duì)容器的訪問(wèn)方式。這也是接口的解耦的最好體現(xiàn)。
? ? ? ? ? ? ? ? ? ? 4.用法差別
? ? ? ? ? ? ? ? ? ? ? ?for循環(huán)一般用來(lái)處理比較簡(jiǎn)單的有序的,可預(yù)知大小的集合或數(shù)組
? ? ? ? ? ? ? ? ? ? ? ?foreach可用于遍歷任何集合或數(shù)組,而且操作簡(jiǎn)單易懂,他唯一的不好就是需要了解集合內(nèi)部類型
? ? ? ? ? ? ? ? ? ? ? ?iterator是最強(qiáng)大的,他可以隨時(shí)修改或者刪除集合內(nèi)部的元素,并且是在不需要知道元素和集合的類 ? 型的情況下進(jìn)行的(原因可參考第三點(diǎn):多態(tài)差別),當(dāng)你需要對(duì)不同的容器實(shí)現(xiàn)同樣的遍歷方式時(shí),迭代器是最好的選擇!
? ? ? ? ? 轉(zhuǎn)載請(qǐng)注明出處:http://blog.csdn.net/iamkila
轉(zhuǎn)載于:https://www.cnblogs.com/baiduligang/p/4247668.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的for,foreach,iterator的用法和区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 鹿胎膏多少钱一盒啊?
- 下一篇: 分类器是如何做检测的?——Cascade