国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

深入理解迭代器

yagami / 402人閱讀

摘要:一,迭代器的原理我們大家都知道迭代器有個(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è)元素都沒(méi)有
    private int courser = -1;
    //判斷是否有下一個(gè)元素
    public boolean hasNext(){
        return courser+1

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

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

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

上面的數(shù)組 是一個(gè)固定 寫(xiě)死了的,可不可以寫(xiě)一個(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ù)組的容量超過(guò)了5,這個(gè)時(shí)候就需要擴(kuò)容
        if(this.size == elem.length){//說(shuō)明數(shù)組的容量不夠
            elem = Arrays.copyOf(elem, elem.length+5);//自定義,想加多少就多少
        }
        elem[size] = ele;
        size++;//實(shí)際大小+1
    }

三,迭代器泛型

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

  public class ArrayList implements java.lang.Iterable{
    /**
     * 使用泛型 可以操作多個(gè)類(lèi)型
     */
    //泛型沒(méi)有數(shù)組,所以這里使用Object來(lái)接收
    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)部類(lèi)
    public Iteratoriterator(){
        return new Iterator(){//Iterator迭代器接口實(shí)現(xiàn)類(lèi)(匿名)對(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非常的類(lèi)似,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的子類(lèi),實(shí)現(xiàn)字符串的分割,但是不支持正則表達(dá)式

String emails = 
             "cc@163.com;cc@qq.com;cc@sina.com";
    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://specialneedsforspecialkids.com/yun/64813.html

相關(guān)文章

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

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

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

    摘要:什么是迭代器中創(chuàng)建迭代器如下所示什么是生成器生成器是一種返回迭代器的函數(shù)每當(dāng)招待完一條語(yǔ)句后函數(shù)就會(huì)自動(dòng)停止執(zhí)行關(guān)鍵字可返回任何值或表達(dá)式關(guān)鍵字只可在生成器內(nèi)部使用,在其它地方使用會(huì)導(dǎo)致程序拋出語(yǔ)法錯(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ì)象是不可迭代的,但是可以通過(guò)創(chuàng)建迭代器。在迭代器中拋出錯(cuò)誤不再執(zhí)行生成器返回語(yǔ)句生成器中添加表示退出操作。迭代器是一個(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元查看
<