码迷,mamicode.com
首页 > 其他好文 > 详细

迭代器模式

时间:2018-05-31 22:59:10      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:gre   new   技术   .com   last   代码   public   http   方法   

迭代器模式介绍

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

聚合对象:存储数据

迭代器:遍历数据

 

迭代器模式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

 

迭代器模式

标签:gre   new   技术   .com   last   代码   public   http   方法   

原文地址:https://www.cnblogs.com/xiaoliangup/p/9119240.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!