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。

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

  • 相关阅读:
    单例模式的懒汉式在多线程的问题
    String、StringBuffer、与StringBuilder的区别
    java网络编程(7)——利用tcp实现文件上传
    java网络编程(6)——实现一个服务器把小写转大写
    java网络编程(5)——Tcp
    java网络编程(4)——udp实现聊天
    数据库单表增量备份方案
    java网络编程(3)——UDP
    使用Docker快速搭建Tensorflow开发环境
    word2vec并行实现小记
  • 原文地址:https://www.cnblogs.com/zhengyuanyuan/p/10756309.html
Copyright © 2011-2022 走看看