zoukankan      html  css  js  c++  java
  • 迭代器模式

    迭代器模式介绍

    提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。迭代器是可以从前往后,或者从后往前遍历的。为遍历不同聚集结构提供如:开始,下一个,是否有下一个,是否结束,当前哪一个等等的一个统一接口。

    聚合对象:存储数据

    迭代器:遍历数据

    迭代器模式UML图

    迭代器代码实现

    迭代器接口

    public interface Iterator {
        void First();
        void next();
        
        Boolean hasNext();
        
        Boolean isFirst();
        Boolean isLast();
        
        Object currentItem();
        
        
    }
    View Code

    聚合对象及迭代器实现类

    import java.util.ArrayList;
    import java.util.List;
    
    public class ConcreateMyAggregate {
        
        private List<Object> lists=new ArrayList<Object>();
    
        public ConcreateMyAggregate() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        public List<Object> getLists() {
            return lists;
        }
    
        public void setLists(List<Object> lists) {
            this.lists = lists;
        }
        
        public void addObject(Object obj){
            lists.add(obj);
        }
        
        public void removeObject(Object obj){
            lists.remove(obj);
        }
        
        
        public Iterator getIterator(){
            return new MyIterator();
        }
        
        
         private class MyIterator implements Iterator{
             
             private int cursor;
             
             
            @Override
            public void First() {
                cursor=0;
            }
    
            @Override
            public void next() {
                if(hasNext() ){
                    cursor++;
                }
            }
    
            @Override
            public Boolean isFirst() {
                return cursor==0?true:false;
            }
    
            @Override
            public Boolean isLast() {
                // TODO Auto-generated method stub
                return cursor==lists.size()-1 ? true:false;
            }
    
            @Override
            public Object currentItem() {
                return lists.get(cursor);
            }
    
            @Override
            public Boolean hasNext() {
                return cursor<lists.size()?true:false;
            }
            
        }
    View Code

    测试类

    public class Main {
        
        public static void main(String[] args) {
            ConcreateMyAggregate aggregate=new ConcreateMyAggregate();
            
            aggregate.addObject("aa");
            aggregate.addObject("bb");
            aggregate.addObject("cc");
            
            Iterator iterator = aggregate.getIterator();
            while(iterator.hasNext()){
                Object obj=iterator.currentItem();
                System.out.println(obj);
                iterator.next();
            }
            
        }
        
    }
    View Code
  • 相关阅读:
    Eclipse 导入项目乱码问题(中文乱码)
    sql中视图视图的作用
    Java基础-super关键字与this关键字
    Android LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot)的参数理解
    Android View和ViewGroup
    工厂方法模式(java 设计模式)
    设计模式(java) 单例模式 单例类
    eclipse乱码解决方法
    No resource found that matches the given name 'Theme.AppCompat.Light 的完美解决方案
    【转】使用 Eclipse 调试 Java 程序的 10 个技巧
  • 原文地址:https://www.cnblogs.com/xiaoliangup/p/9119240.html
Copyright © 2011-2022 走看看