最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解java迭代器模式

 更新時間:2019年05月16日 10:27:03   作者:__大白菜__  
這篇文章主要介紹了java迭代器模式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

場景

  1. 提供一種可以遍歷聚合對象的方式。又稱為:游標(biāo)cursor模式
  2. 聚合對象:存儲數(shù)據(jù)
  3. 迭代器:遍歷數(shù)據(jù)

JDK內(nèi)置的迭代器(List/Set)

package com.qianyu.gof.iterator;

import java.util.ArrayList;
import java.util.Iterator;

/**
 * @author lijing
 * @date 2019-04-10-14:38
 * @discroption JDK內(nèi)置迭代器測試類
 */
public class IteratorTest {
  public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<String>();
    list.add("a");
    list.add("b");
    list.add("c");
    Iterator<String> iter = list.iterator();
    //hasNext()判斷是否有下一個元素
    while (iter.hasNext()) {
      //next()函數(shù)返回當(dāng)前元素,并將游標(biāo)指向下一位
      System.out.println(iter.next());
    }
  }
}

手動實現(xiàn)迭代器

package com.qianyu.gof.iterator;

/**
 * @author lijing
 * @date 2019-04-10-14:37
 * @discroption 迭代器接口
 */
public interface MyIterator {
  /**
   * 判斷是否有下一個元素
   *
   * @return
   */
  boolean hasNext();

  /**
   * 返回當(dāng)前元素,并且將游標(biāo)向下移動一位
   *
   * @return
   */
  Object next();
}
package com.qianyu.gof.iterator;

import java.util.ArrayList;
import java.util.List;

/**
 * @author lijing
 * @date 2019-04-10-19:18
 * @discroption 自定義聚合類
 */
public class MyList {
  List<Object> list = new ArrayList<Object>();

  public boolean add(Object obj) {
    return list.add(obj);
  }

  public boolean remove(Object obj) {
    return list.remove(obj);
  }

  /**
   * 返回迭代器對象
   *
   * @return
   */
  public ConcreteIterator iterator() {
    return new ConcreteIterator();
  }

  /**
   * 自定義內(nèi)部類,可以直接使用外部類的屬性
   */
  private class ConcreteIterator implements MyIterator {
    //游標(biāo)
    private int cursor = 0;

    @Override
    public boolean hasNext() {
      return this.cursor < list.size();
    }

    @Override
    public Object next() {
      return list.get(cursor++);
    }
  }
}
package com.qianyu.gof.iterator;

/**
 * @author lijing
 * @date 2019-04-10-19:14
 * @discroption 自定義迭代器測試類(迭代器模式)
 */
public class IteratorTest2 {
  public static void main(String[] args) {
    MyList myList = new MyList();
    myList.add("aa");
    myList.add("bb");
    myList.add("cc");
    MyIterator iter = myList.iterator();
    while (iter.hasNext()){
      System.out.println(iter.next());
    }
  }
}

UML類圖:

以上所述是小編給大家介紹的java迭代器模式詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • spring單元測試之@RunWith的使用詳解

    spring單元測試之@RunWith的使用詳解

    這篇文章主要介紹了spring單元測試之@RunWith的使用詳解,@RunWith 就是一個運(yùn)行器,@RunWith(JUnit4.class) 就是指用JUnit4來運(yùn)行,
    @RunWith(SpringJUnit4ClassRunner.class),讓測試運(yùn)行于Spring測試環(huán)境,需要的朋友可以參考下
    2023-12-12
  • springboot @RequiredArgsConstructor的概念與使用方式

    springboot @RequiredArgsConstructor的概念與使用方式

    這篇文章主要介紹了springboot @RequiredArgsConstructor的概念與使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • Spring?ComponentScan的掃描過程解析

    Spring?ComponentScan的掃描過程解析

    這篇文章主要介紹了spring?ComponentScan的掃描過程解析,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • Java實現(xiàn)的Excel列號數(shù)字與字母互相轉(zhuǎn)換功能

    Java實現(xiàn)的Excel列號數(shù)字與字母互相轉(zhuǎn)換功能

    這篇文章主要介紹了Java實現(xiàn)的Excel列號數(shù)字與字母互相轉(zhuǎn)換功能,涉及java針對Excel相關(guān)數(shù)值與字符串操作技巧,需要的朋友可以參考下
    2018-03-03
  • ReentrantReadWriteLock?讀寫鎖分析總結(jié)

    ReentrantReadWriteLock?讀寫鎖分析總結(jié)

    這篇文章主要介紹了ReentrantReadWriteLock 讀寫鎖分析總結(jié),ReentranReadWriteLock中有兩把鎖,一把讀鎖,一把寫鎖,關(guān)于這兩把鎖的介紹,需要的小伙伴可以參考一下
    2022-05-05
  • Java的CGLIB動態(tài)代理深入解析

    Java的CGLIB動態(tài)代理深入解析

    這篇文章主要介紹了Java的CGLIB動態(tài)代理深入解析,CGLIB是強(qiáng)大的、高性能的代碼生成庫,被廣泛應(yīng)用于AOP框架,它底層使用ASM來操作字節(jié)碼生成新的類,為對象引入間接級別,以控制對象的訪問,需要的朋友可以參考下
    2023-11-11
  • 消息中間件詳解以及比較選擇

    消息中間件詳解以及比較選擇

    這篇文章主要介紹了消息中間件詳解以及比較選擇,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • SpringBoot結(jié)果封裝和異常攔截的實現(xiàn)示例

    SpringBoot結(jié)果封裝和異常攔截的實現(xiàn)示例

    SpringBoot 項目中,我們通常需要將結(jié)果數(shù)據(jù)封裝成特定的格式,以方便客戶端進(jìn)行處理,本文主要介紹了SpringBoot?優(yōu)雅的結(jié)果封裝和異常攔截,感興趣的可以了解一下
    2023-08-08
  • Java多線程中synchronized的工作原理

    Java多線程中synchronized的工作原理

    這篇文章主要介紹了Java多線程中synchronized的工作原理,本期講解 synchronized 工作的原理以及常見的鎖優(yōu)化機(jī)制,相信大家在看完這篇博文后對 synchronized 工作流程有一定的理解,需要的朋友可以參考下
    2023-07-07
  • Maven配置文件settings.xml的實現(xiàn)

    Maven配置文件settings.xml的實現(xiàn)

    Maven是一個用于構(gòu)建和管理Java項目的強(qiáng)大工具,它依賴于設(shè)置文件來配置和管理其行為,其中最重要的之一便是settings.xml文件,本文主要介紹了Maven配置文件settings.xml的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-01-01

最新評論

宁德市| 河西区| 滕州市| 广平县| 湛江市| 扶风县| 疏附县| 古浪县| 鸡西市| 清河县| 新龙县| 宁波市| 墨玉县| 宾川县| 册亨县| 区。| 龙岩市| 晋城| 秦安县| 钟山县| 遵义县| 鹤峰县| 杨浦区| 汽车| 大化| 南平市| 米泉市| 涞水县| 玛曲县| 冕宁县| 丰城市| 韩城市| 雅江县| 威宁| 从江县| 涿鹿县| 安宁市| 莫力| 莲花县| 巨鹿县| 定结县|