標籤:iterator for 集合 java 增強for迴圈
Iterator是Java中的一個迭代器介面(Interface),用來提供標準的Java迭代器
Iterator支援泛型因為集合(Collection)類可以裝入的類型是不確定的,從集合中取出的都是Object類型,加入泛型,就是告訴編譯器確定要裝入的物件類型,取值時就無需強制轉換了。
for each 是 Java 5 中新增的一個迴圈結構,本質上是一個Iterator,特點是可以用來遍曆集合元素而不用考慮集合下標。
綜合執行個體:
package net.csdn.shf4715;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class IteratorDemo {/** * Iterator和for each的綜合例子 * @param args */ public static void main(String[] args) { //建立一個list並設定泛型為Emp類型 List<Emp> list = new ArrayList<Emp>(); //添加Emp執行個體到list list.add(new Emp("one")); list.add(new Emp("*")); list.add(new Emp("two")); list.add(new Emp("*")); list.add(new Emp("three")); list.add(new Emp("*")); //使用list的iterator()方法返回一個迭代器 Iterator<Emp> it = list.iterator(); //hasNext() Iterator中的一個方法,判斷是否有下一個元素 while(it.hasNext()) { //如果Emp對象中的name的值是*則刪除該元素 if("*".equals(it.next().getName())){ it.remove(); } } System.out.println(list); //增強for迴圈用於遍曆集合,但不適合對集合進行刪除操作 //但是可以進行修改 for(Emp e : list) { list.set(1,new Emp("1")); System.out.print(e.getName()+" "); } }}/** * Emp類 * @author haydn * */class Emp { private String name; public Emp(String name) { super(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String toString() { return name; }}
運行結果:
[one, two, three]
one 1 three
Iterator和 for each的區別:
1.for each 不能刪除集合元素
2.Iterator 只能使用自身的remove()方法來刪除元素,不能用集合的刪除操作
3.ArrayList裡,for迴圈較快,LinkedList裡,使用iterator較快
總結:這兩種遍曆方式各有特色,優勢各有不同,在處理不同情景下的資料,利用好它們的長處能使程式啟動並執行更好。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Java Iterator和增強for迴圈 for each詳解