zoukankan      html  css  js  c++  java
  • java实现23种设计模式之迭代器模式

    迭代器模式(Iterator Pattern)是 Java 编程环境中非常常用的设计模式。

    这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。

    package com.ceshi15;
    
    public interface Iterator {
        //前移
        public Object previous();
        
        //后移
        public Object next();
        public boolean hasNext();
        
        //取得第一个元素
        public Object first();
    }
    package com.ceshi15;
    
    public interface Collection {
        
        public Iterator iterator();
        
        /*取得集合元素*/
        public Object get(int i);
        
        /*取得集合大小*/
        public int size();
    }

    实现类

    package com.ceshi15;
    
    public class MyIterator implements Iterator {
    
        private Collection collection;
        private int pos = -1;
        
        public MyIterator(Collection collection){
            this.collection = collection;
        }
        
        @Override
        public Object previous() {
            if(pos > 0){
                pos--;
            }
            return collection.get(pos);
        }
    
        @Override
        public Object next() {
            if(pos<collection.size()-1){
                pos++;
            }
            return collection.get(pos);
        }
    
        @Override
        public boolean hasNext() {
            if(pos<collection.size()-1){
                return true;
            }else{
                return false;
            }
        }
    
        @Override
        public Object first() {
            pos = 0;
            return collection.get(pos);
        }
    
    }
    package com.ceshi15;
    
    public class MyCollection implements Collection {
    
        public String string[] = {"A","B","C","D","E"};
        
        @Override
        public Iterator iterator() {
            return new MyIterator(this);
        }
    
        @Override
        public Object get(int i) {
            return string[i];
        }
    
        @Override
        public int size() {
            return string.length;
        }
    
    }
    package com.ceshi15;
    
    public class Test {
        public static void main(String[] args) {
            Collection collection = new MyCollection();
            Iterator it = collection.iterator();
            
            while(it.hasNext()){
                System.out.println(it.next());
            }
        }
    }

    可以模仿java迭代方法的实现。

    关键就是定义接口:hasNext, next。

    然后通过这种借口写出自己的集合框架

  • 相关阅读:
    storm学习笔记
    Hbase学习笔记
    Hadoop实战项目之网站数据点击流分析(转载分析)
    Hive实战之学生选课
    Hive实战之求月销售额和累计销售额
    Hive实战之每年最高温度+时间
    Hive实战之学生课程成绩
    网易-C++开发实习生-业务初面和复面(视频)-20211028
    2021粤港澳大湾区智能网络与通信系统论坛-1026~1027-线上
    jupyter notebook
  • 原文地址:https://www.cnblogs.com/zhengyuanyuan/p/10756309.html
Copyright © 2011-2022 走看看