国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java For-each 和 Iterator異同點總結

2019-11-06 06:06:00
字體:
來源:轉載
供稿:網友

java For-each 和 Iterator異同點總結

相同點

都可以對容器進行從頭到尾的遍歷 for(String s:list){ System.out.PRint(s); } Iterator it = list.iterator(); while(it.hasNext()){ System.out.print(it.next()); }實現了Iterable接口的類,for-each在編譯器中的實現就是IteratorList<String> list = new ArrayList<String>();for(String s:list){ System.out.print(s);}![javap反編譯后后的結果,看第9、16、25行](http://img.blog.csdn.net/20170307161748338?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvam9obl9sdw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

不同點

For-each只能讀取元素內容,無法對collection進行結構性修改(ps:結構性修改一般指改變大小,或者在迭代過程中打亂)public class test { static class Person { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Person [id=" + id + ", name=" + name + "]"; } } public static void main(String[] args) { List<Person> list = new ArrayList<Person>(); Person p1 = new Person(); for (int i = 0; i < 5; i++) { Person p = new Person(); p.setId(1); p.setName("name"); list.add(p); } for (Person p : list) { System.out.println(p); list.remove(p);//throws ConcurrentModificationException list.add(p1);//throws ConcurrentModificationException } }}For-each只能讀取當前元素,前后元素不可見,而部分Iterator可以獲取前后元素(如實現了ListIterator接口的..etc)For-each只能單向從頭到尾遍歷,Iterator可以實現雙向遍歷For-each是語法糖,有很好的閱讀體驗,同時避免了迭代器變量多次出現減小BUG幾率;Iterator模式是設計模式之一:迭代器模式

暫時就總結了這些,有時間再補充。

初學者難免有誤,還望不吝賜教,感激不盡。

參考資料:

http://www.cnblogs.com/slwenyi/p/6393366.html http://stackoverflow.com/questions/18508786/for-each-vs-iterator-which-will-be-the-better-option


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 合作市| 长武县| 阿坝县| 阳泉市| 新丰县| 永嘉县| 阿克| 当涂县| 丰镇市| 江城| 察雅县| 江油市| 敖汉旗| 松阳县| 杭锦旗| 珲春市| 安图县| 海原县| 宽甸| 蒙自县| 鹿邑县| 澄江县| 大宁县| 丘北县| 泾源县| 兴安盟| 阜康市| 正镶白旗| 曲水县| 义乌市| 龙海市| 华蓥市| 辽阳市| 饶阳县| 咸宁市| 瑞安市| 瑞安市| 宿迁市| 江永县| 偏关县| 洪洞县|