for (Iterator<String> i = list.iterator();i.hasNext();) { doSomething(i.next()); } for (int i = 0; i < list.size(); i++) { doSomething(list.get(i)); }
for (String str : list) { doSomething(str); }
比传统的for循环:html
关于有效预防bug以及简洁性,请看如下代码:数组
// 不简洁,同时易误致使bug for (Iterator<String> i = list.iterator();i.hasNext();) { for (Iterator<String> j = list2.iterator();j.hasNext();) { doSomething(i.next(),j.next()); } } // 简洁 for (String s : list) { for (String s1 : list2) { doSomething(s,s1); } }
(1)过滤
若是须要遍历集合,并删除选定的元素,就须要使用显示的迭代器,以即可以调用它的remove方法。性能
// 正确作法 for (Iterator<String> i = list.iterator();i.hasNext();) { i.next(); // 指向要删除的元素 i.remove(); } // 错误作法 for (int i = 0; i < list.size(); i++) { list.remove(i); } // 错误作法 for (String s : list) { list.remove(s); }
关于删除集合元素参考:Java循环删除集合多个元素的正确打开方式code
(2)转换
若是须要遍历全部元素,而后从新设定某些值,那么就须要李彪迭代器或者数组索引,以便设定元素的值。htm
(3)平行迭代
就是并行地同时遍历多个集合,须要显示地控制迭代器或者索引变量,以便全部迭代器或者索引变量均可以获得同步前移。blog