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
  • 相关阅读:
    企业老板怎么获得战略视野及组织管理能力?看这些管理书籍就行 了
    公司管理者必读的5本经典书籍推荐
    如何提升自己的领导能力?
    如何培养自己的商业思维能力?
    口才训练书籍推荐
    公司管理课程,我推荐12Reads系列
    比较好的管理学书籍推荐
    如何自学企业管理?你需要看这些书
    DMZ主机实现
    inotify+rsync实现文件即使备份
  • 原文地址:https://www.cnblogs.com/xiaoliangup/p/9119240.html
Copyright © 2011-2022 走看看