Java设计模式之迭代器模式

迭代器模式定义如下:
提供一种方法访问一个容器对象中的各个对象,而又勿需暴露该对象的内部细节,是一种只应用于容器对象遍历的设计模式。
使用迭代器模式的情景如下:
遍历集合对象,不需要知道对象在集合中的存储方式;用户可以同时使用多个迭代器遍历一个集合。

在计算机程序设计中,经常会遇到各种各样的容器,如数组、链表、集合、映射等。在容器的各种操作中,元素遍历是最常见的操作之一,不同类型的容器,遍历方法也不同。
迭代器模式,提供一种方法顺序访问一个集合对象中的各个元素,而又不暴露其内部的表示。其实JDK中的迭代器模式是很成熟的,它应用在许多的容器中。下面的代码体现了迭代器在Vector、LinkedList、Set容器中的遍历应用。

public class Test {
	
	public static void traverse(Collection<String> c) {
		Iterator<String> it = c.iterator();
		while(it.hasNext()) {
			System.out.println(it.next());
		}
	}
	
	public static void main(String[] args) {
		Vector<String> v = new Vector<>();
		v.add("aaa");
		v.add("bbb");
		v.add("ccc");
		System.out.println("Vector traverse:");
		traverse(v);
		System.out.println();
		
		LinkedList<String> l = new LinkedList<>();
		l.add("aaa");
		l.add("bbb");
		l.add("ccc");
		System.out.println("LinkedList traverse:");
		traverse(l);
		System.out.println();
		
		Set<String> s = new HashSet<>();
		s.add("aaa");
		s.add("bbb");
		s.add("ccc");
		System.out.println("Set traverse:");
		traverse(s);
		System.out.println();
	}
}

我们知道:Vector容器的特点是内存空间是线性、连续的;LinkedList容器的特点是链式结构;Set集合的特点是树形结构。虽然这三类容器的特点不同,但却是调用相同的遍历方法traverse()完成了容器中元素的遍历。因此我们可以所,采用迭代器设计模式后,容器的元素遍历与具体的容器是无关的。
想要深入了解迭代器模式的,可以去查看Iterator的原码,这里就不做深入的了解了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值