成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

深入理解迭代器

yagami / 448人閱讀

摘要:一,迭代器的原理我們大家都知道迭代器有個(gè)方法,分別是下面分別自定義實(shí)現(xiàn)個(gè)方法解釋迭代器的原理。

一,迭代器的原理

我們大家都知道迭代器有3個(gè)方法,分別是 hashNext(); next(); remove();,下面分別自定義實(shí)現(xiàn)3個(gè)方法 解釋迭代器的原理。

//數(shù)組存儲(chǔ)值
    private String [] elem = {"a","b","c"};
    //數(shù)組大小
    private int size  = elem.length;
    //定義計(jì)數(shù)器(指針 游標(biāo)),在數(shù)組里面,0 代表第一個(gè)元素,-1 代表一個(gè)元素都沒有
    private int courser = -1;
    //判斷是否有下一個(gè)元素
    public boolean hasNext(){
        return courser+1

二,迭代器調(diào)用

上面我們將迭代器的3個(gè)基本方法分別自定義的寫了一遍,我們來考慮迭代器調(diào)用的問題,如果每次調(diào)用迭代器用一個(gè)方法來封裝一下 不更加方便一些,不需要重復(fù)創(chuàng)建對(duì)象,開辟多余的內(nèi)存空間。

    //創(chuàng)建一個(gè)內(nèi)部類,面向接口編程,使用了一個(gè)內(nèi)部類
    private class MyIter implements Iterator{
    private int courser = -1;
    public boolean hasNext(){
        return courser+1

上面的數(shù)組 是一個(gè)固定 寫死了的,可不可以寫一個(gè)方法,可以靈活的添加數(shù)組元素呢?

//定義一個(gè)初始元素只有5個(gè)大小的數(shù)組
private String [] elem =new String[5];
private String [] elem =new String[5];
    //大小
    private int size  = 0;
    public void add(String ele){
        //如果數(shù)組的容量超過了5,這個(gè)時(shí)候就需要擴(kuò)容
        if(this.size == elem.length){//說明數(shù)組的容量不夠
            elem = Arrays.copyOf(elem, elem.length+5);//自定義,想加多少就多少
        }
        elem[size] = ele;
        size++;//實(shí)際大小+1
    }

三,迭代器泛型

我們基本上了解了迭代器的一些實(shí)現(xiàn)原理,但是迭代器的類型也是固定的,可不可以用泛型來隨意操作迭代器的類型呢?

  public class ArrayList implements java.lang.Iterable{
    /**
     * 使用泛型 可以操作多個(gè)類型
     */
    //泛型沒有數(shù)組,所以這里使用Object來接收
    private Object [] elem =new Object[5];
    private int size  = 0;
    public void add(E ele){
        if(this.size == elem.length){
            elem = Arrays.copyOf(elem, elem.length+5);
        }
        elem[size] = ele;
        size++;//實(shí)際大小+1
    }
    
    //使用匿名內(nèi)部類
    public Iteratoriterator(){
        return new Iterator(){//Iterator迭代器接口實(shí)現(xiàn)類(匿名)對(duì)象
            private int courser = -1;
            public boolean hasNext(){
                return courser+1 list = new ArrayList();
        list.add(1);
        list.add(2);
        for(Integer element:list){
            System.out.println(element);
        }
        //操作String
        ArrayList listStr = new ArrayList();
        listStr.add("as");
        listStr.add("asss");
        for(String str:listStr){
            System.out.println(str);
        }
    }
}

講到迭代器,有一個(gè)接口 叫Enumberation 隨便回顧一下,這個(gè)接口在jdk1.5之前用的非常的頻繁,跟上文講到的Iterator非常的類似,hasMoreElements() 判斷是否有下一個(gè)元素,nextElement()獲取下一個(gè)元素 案列如下:

    Vector vc 
          = new Vector();
    vc.add("a");
    vc.add("b");
    vc.add("c");
    Enumeration en = vc.elements();
    while(en.hasMoreElements()){
        System.out.println(en.nextElement());
    }

StringTokenizer 是Enumberation的子類,實(shí)現(xiàn)字符串的分割,但是不支持正則表達(dá)式

String emails = 
             "[email protected];[email protected];[email protected]";
    StringTokenizer str 
         = new StringTokenizer(emails,";");//只支持分隔符,不支持正則表達(dá)式
    while(str.hasMoreElements()){
        System.out.println(str.nextElement());
    }

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/64813.html

相關(guān)文章

  • 深入理解ES6之《迭代與生成

    摘要:什么是迭代器中創(chuàng)建迭代器如下所示什么是生成器生成器是一種返回迭代器的函數(shù)每當(dāng)招待完一條語句后函數(shù)就會(huì)自動(dòng)停止執(zhí)行關(guān)鍵字可返回任何值或表達(dá)式關(guān)鍵字只可在生成器內(nèi)部使用,在其它地方使用會(huì)導(dǎo)致程序拋出語法錯(cuò)誤所以下面例子是有錯(cuò)誤的可迭代對(duì)象具有屬 什么是迭代器 ES5中創(chuàng)建迭代器如下所示: function createIterator(items) { var i = 0 retu...

    王軍 評(píng)論0 收藏0
  • 深入理解ES6之《迭代與生成

    摘要:什么是迭代器中創(chuàng)建迭代器如下所示什么是生成器生成器是一種返回迭代器的函數(shù)每當(dāng)招待完一條語句后函數(shù)就會(huì)自動(dòng)停止執(zhí)行關(guān)鍵字可返回任何值或表達(dá)式關(guān)鍵字只可在生成器內(nèi)部使用,在其它地方使用會(huì)導(dǎo)致程序拋出語法錯(cuò)誤所以下面例子是有錯(cuò)誤的可迭代對(duì)象具有屬 什么是迭代器 ES5中創(chuàng)建迭代器如下所示: function createIterator(items) { var i = 0 retu...

    myshell 評(píng)論0 收藏0
  • 深入理解ES6》筆記——迭代(Iterator)和生成(Generator)(8)

    摘要:迭代器是一種特殊對(duì)象,每一個(gè)迭代器對(duì)象都有一個(gè),該方法返回一個(gè)對(duì)象,包括和屬性。默認(rèn)情況下定義的對(duì)象是不可迭代的,但是可以通過創(chuàng)建迭代器。在迭代器中拋出錯(cuò)誤不再執(zhí)行生成器返回語句生成器中添加表示退出操作。迭代器是一個(gè)對(duì)象。 迭代器(Iterator) ES5實(shí)現(xiàn)迭代器 迭代器是什么?遇到這種新的概念,莫慌張。 迭代器是一種特殊對(duì)象,每一個(gè)迭代器對(duì)象都有一個(gè)next(),該方法返回一個(gè)對(duì)...

    AndroidTraveler 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<