Java Iterator和增強for迴圈 for each詳解

來源:互聯網
上載者:User

標籤: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詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.