国产探花免费观看_亚洲丰满少妇自慰呻吟_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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鄢陵县| 兴仁县| 东明县| 镇安县| 武定县| 沂南县| 昌乐县| 东丰县| 蒙自县| 遂平县| 东乌珠穆沁旗| 南澳县| 龙江县| 汝城县| 峨眉山市| 宁河县| 宣恩县| 库车县| 福海县| 石景山区| 长治县| 昭苏县| 广灵县| 乡城县| 霞浦县| 揭阳市| 永寿县| 胶州市| 延吉市| 凤凰县| 洛扎县| 古交市| 宕昌县| 循化| 武汉市| 华容县| 嵊州市| 崇阳县| 西安市| 凉城县| 盐边县|