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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

foreach 循环详解

發(fā)布時(shí)間:2023/12/3 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 foreach 循环详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
譯自:http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html
考慮如下代碼(方式一):迭代一個(gè) collection 集合對(duì)象,然后刪除集合元素 void cancelAll(Collection<TimerTask> c) {for (Iterator<TimerTask> i = c.iterator(); i.hasNext(); )i.next().cancel(); }以上迭代方式很丑陋,你知道,為什么丑陋?你看迭代器i 出現(xiàn)了3次,增加了我們出錯(cuò)幾率,而且代碼如此雜亂,我們看如下代碼(方式二foreach 結(jié)構(gòu)),它摒棄了這種丑陋。 void cancelAll(Collection<TimerTask> c) {for (TimerTask t : c)t.cancel(); } 利用方式一迭代 collection 集合對(duì)象 通常犯的錯(cuò)誤,荔枝代碼如下: List suits = ...; List ranks = ...; List sortedDeck = new ArrayList();// BROKEN - throws NoSuchElementException! for (Iterator i = suits.iterator(); i.hasNext(); )for (Iterator j = ranks.iterator(); j.hasNext(); )sortedDeck.add(new Card(i.next(), j.next())); 為什么報(bào)錯(cuò)? 當(dāng) ranks 的size 大于 suits.size 的時(shí)候,第3行中的 i.next() 就會(huì)拋出 NoSuchElementException 異常。
修改后的代碼如下(利用臨時(shí)變量 保存Suit實(shí)例,但代碼還是那么雜亂無(wú)章): // Fixed, though a bit ugly for (Iterator i = suits.iterator(); i.hasNext(); ) {Suit suit = (Suit) i.next();for (Iterator j = ranks.iterator(); j.hasNext(); )sortedDeck.add(new Card(suit, j.next())); } 我們看foreach 結(jié)構(gòu)如何實(shí)現(xiàn) for (Suit suit : suits)for (Rank rank : ranks)sortedDeck.add(new Card(suit, rank)); 等等 foreach結(jié)構(gòu)還可以應(yīng)用到數(shù)組的遍歷 // Returns the sum of the elements of a int sum(int[] a) {int result = 0;for (int i : a)result += i;return result; } 最后:我們什么時(shí)候不能用 foreach結(jié)構(gòu) 迭代集合元素呢? case1:程序需要訪問(wèn)迭代器 然后移除當(dāng)前元素的時(shí)候;因?yàn)閒oreach 結(jié)構(gòu)隱藏了 迭代器,所以無(wú)法調(diào)用remove() 方法; case2:foreach 結(jié)構(gòu)不適用于 過(guò)濾 同樣也不適用于 遍歷過(guò)程中替換元素的操作。 case3:最后,foreach結(jié)構(gòu) 不適用于同時(shí)并行遍歷 多個(gè) 集合元素。
雖然 foreach結(jié)構(gòu)有以上缺點(diǎn),但是它的應(yīng)用可以覆蓋掉大多數(shù)的情況需要。

總結(jié)

以上是生活随笔為你收集整理的foreach 循环详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。