您的位置 首页 java

「编程设计」迭代器(Iterator)模式-集合类的重要组成部分

迭代器 (Iterator)模式,是一种对象行为型模式,提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。

迭代器模式主要场景是处理集合的顺序访问,统一抽象为迭代器。

集合具体的数据结构有简单列表存储,也有栈、 树、 图和其他复杂的数据结构。不同的数据结构,遍历元素的方式也不同,将集合的遍历行为抽取为单独的迭代器对象,可以让客户端不用关心具体的实现细节。

在Java的集合类中被广泛使用。

迭代器模式的实现

迭代器模式实现的关键就是迭代器的抽象,主要角色如下:

  • 抽象聚合(Collection)角色:聚合对象的接口。
  • 具体聚合(Concrete Collection)角色:实现抽象聚合类。
  • 抽象迭代器(Iterator)角色:定义访问和遍历聚合元素的接口,通常包含 hasNext()、first()、next() 等方法。
  • 具体迭代器(Concrete lterator)角色:实现抽象迭代器接口中所定义的方法,完成对聚合对象的遍历,记录遍历的当前位置。

类图如下:

代码比较简单,在 JDK 中,ArrayList与List,ArrayList的内部类Itr与Iterator就组成简单的迭代器模式。

 //迭代器接口
public interface  Iterator <E> {
     boolean  hasNext();
    E next();
}
//集合接口
public interface List<E> extends Iterable<E>{
    Iterator<E> iterator();
}
//集合实现
public class ArrayList<E> implements List<E>{
    private int size;
    public Iterator<E> iterator() {
        return new Itr();
    }
    //内部类实现迭代器
    private class Itr implements Iterator<E> {
        int cursor;
        int lastRet = -1;
        public boolean hasNext() {
            return cursor != size;
        }
        public E next() {
            int i = cursor;
            cursor = i + 1;
            return (E) elementData[lastRet = i];
        }
    }
}  

文章来源:智云一二三科技

文章标题:「编程设计」迭代器(Iterator)模式-集合类的重要组成部分

文章地址:https://www.zhihuclub.com/186831.shtml

关于作者: 智云科技

热门文章

发表回复

您的电子邮箱地址不会被公开。

网站地图