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

詳解java迭代器模式

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

場景

  1. 提供一種可以遍歷聚合對象的方式。又稱為:游標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ù)返回當前元素,并將游標指向下一位
      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();

  /**
   * 返回當前元素,并且將游標向下移動一位
   *
   * @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 {
    //游標
    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迭代器模式詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

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

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

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

    springboot @RequiredArgsConstructor的概念與使用方式

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

    Spring?ComponentScan的掃描過程解析

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

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

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

    ReentrantReadWriteLock?讀寫鎖分析總結

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

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

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

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

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

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

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

    Java多線程中synchronized的工作原理

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

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

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

最新評論

辽阳市| 深水埗区| 靖安县| 长乐市| 筠连县| 连南| 南安市| 榆树市| 师宗县| 抚顺县| 贵港市| 乌拉特后旗| 广西| 三亚市| 土默特左旗| 资讯 | 顺义区| 玛曲县| 滦南县| 镇原县| 武威市| 察哈| 页游| 沅陵县| 肇东市| 佛冈县| 长子县| 榆社县| 新营市| 龙陵县| 贡觉县| 华坪县| 商城县| 太和县| 怀远县| 常德市| 陈巴尔虎旗| 威远县| 临洮县| 增城市| 静乐县|