设计模式之Iterator

迭代器设计模式广泛用于集合中的遍历

这里主要用到了内部类

以下是简化的的一个迭代器的设计模式

1.Iterator接口

public interface Iterator<E> {
	boolean hasNext();
	E next();
}

2.内部类

public class Outer {
	private Object[] item;
	private int size = 0;

	public Outer(int n)  {
		if(n<=0){
			System.out.println("越界了");
		}
		item = new Object[n];
	}
	public void add(Object object){
		item[size++] = object;
	}
    public Iterator<Object> iterator(){
    	return new Iter();
    }
	public class Iter implements Iterator<Object>{
		int current = 0;
		@Override
		public boolean hasNext() {
			return current < size;
		}

		@Override
		public Object next() {
			if(current >= size){
				return null;
			}
			return item[current++];
		}
	}

}

3.测试

public static void main(String[] args){
		Outer outer = new Outer(10);
		outer.add(new Object());
		outer.add(new Object());
		outer.add(new Object());
		outer.add(new Object());
		outer.add(new Object());
		Iterator<Object> iterator = outer.iterator();
		while(iterator.hasNext()) {
			System.out.println(iterator.next().toString());
		}
	}

输出结果

[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

很简单却很使用的一个设计模式,但是前提是要把内部类了解一遍

时间: 2024-12-23 19:07:04

设计模式之Iterator的相关文章

Java设计模式之Iterator模式

分类: [java]2013-07-15 10:58 917人阅读 评论(0) 收藏 举报 所谓Iterator模式,即是Iterator为不同的容器提供一个统一的访问方式.本文以java中的容器为例,模拟Iterator的原理.参考:马士兵 Java设计模式 Iterator1.首先定义一个容器Collection接口. [java] view plaincopy package com.njupt.zhb.learn.iterator; public interface Collection

设计模式之Iterator模式

STL里的iterator就是应用了iterator模式. 一.什么是迭代模式 Iterator模式也叫迭代模式,是行为模式之一,它把对容器中包含的内部对象的访问委让给外部类,使用Iterator按顺序进行遍历访问的设计模式. 二.不使用迭代模式的应用 在应用Iterator模式之前,首先应该明白Iterator模式用来解决什么问题.或者说,如果不使用Iterator模式,会存在什么问题. 由容器自己实现顺序遍历.直接在容器类里直接添加顺序遍历方法 让调用者自己实现遍历.直接暴露数据细节给外部.

设计模式—迭代器Iterator模式

首先我们先模仿集合中ArrayList和LinkedList的实现.一个是基于数组的实现.一个是基于链表的实现,实现方式各有不同, 为了减少代码的耦合度,面向接口编程.定义Collection接口定义API规范. 可是在遍历集合中的元素时,由于数组和链表的遍历方式不一样,能不能统一处理呢? 再定义一个Iterator接口,让每一个子类集合都实现接口中的方法. 1.接口Collection.java public interface Collection<E> { public void add

设计模式——迭代器(Iterator)模式

概述 迭代器模式简单的说(按我目前的理解)就是一个类提供一个对外迭代的接口,方面调用者迭代.这个迭代接口至少包括两个方法:hasNext()--用于判断是否还有下一个,next()--用于取出下一个对象(或值).而外部使用这个类(取出这个类中的对象或值)时,不用关心这个类存储对象或数据的具体数据结构,即使这个类的存储数据结构临时发生改变,调用者不作任何代码修改仍然可以正常工作.从而实现代码的可重用性和低耦合性.下面以实例说明. 实例 假设有两个书架(BookShelf),一个书架用数组Array

Java设计模式之Iterator

public interface Aggregate { //调用iterator方法生成实现Iterator接口的类的实例 public abstract Iterator iterator(); } public interface Iterator { //判断是否存在下个元素的hasNext方法和获取下一个元素的next方法 //hasNext返回boolean类型,因为存在下一个元素的时候返回true,不存在的时候即遍历至集合末尾,返回false public abstract boo

java.util之Iterable与Iterator

package java.lang; import java.util.Iterator; public interface Iterable<T> { Iterator<T> iterator();} Iterable位于java.lang包中,它持有一个Iterator引用 package java.util; public interface Iterator<E> { boolean hasNext(); E next(); void remove();} It

java提高篇(三十)-----Iterator

本文转载地址:            http://blog.csdn.net/chenssy/article/details/37521461 迭代对于我们搞Java的来说绝对不陌生.我们常常使用JDK提供的迭代接口进行Java集合的迭代. [java] view plaincopyprint? Iterator iterator = list.iterator(); while(iterator.hasNext()){ String string = iterator.next(); //d

Iterator——迭代接口

迭代对于JAVA的来说绝对不陌生.我们常常使用JDK提供的迭代接口进行Java集合的迭代. Iterator iterator = list.iterator();           while(iterator.hasNext()){               String string = iterator.next();               //do something           } 迭代其实我们可以简单地理解为遍历,是一个标准化遍历各类容器里面的所有对象的方法类,它

java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制)

转载请注明出处(请尊重原创!谢谢~): http://blog.csdn.net/javazejian/article/details/53073995 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制) ??这篇是数据结构与算法的第3篇,通过前两篇的介绍,对应顺序表和链表已有