java中的Iterator迭代器

本文介绍了迭代器模式的概念及其在集合类中的应用。通过Iterator模式,可以实现对不同类型的集合进行统一的遍历操作,提高了代码的灵活性和复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Iterator迭代器
Iterator模式是用于遍历集合类的标准访问方式.
Collection是集合类的基本接口,它的子接口有List,Set.其中List接口规定集合类元素具有可控制的顺序.Set接口规定集合类元素不能重复.

Collection接口中定义了方法iterator(),集合类对象如果直接或间接的实现了Collection接口,必然都实现了方法iterator(),这个方法用来返回当前集合对象的一个iterator迭代器,用于对该集合中元素进行遍历.因此迭代器是依赖于某个集合而存在的,本身不能独立存在。

迭代器有三个重要的方法


下面一个图是这三个方法的工作模式(个人理解)


下面以常用的ArrayList对象为例:

List list = new ArrayList();
		list.add("A");list.add("B");list.add("C");
		
		Iterator iter = list.iterator();             //获取list的迭代器
		while(iter.hasNext()){                 //判断该集合中是否还存在元素
			String s = (String) iter.next();  //返回迭代器的下一个元素
			System.out.println(s);
		}

其中需要注意的是remove()方法,remove()方法对next()方法具有依赖性,也就是说如果调用remove()方法之前没有调用next()方法是不合理的.如上面工作模式那个图,当最开始迭代器没有移动时,如果要删除元素A,就必须先使用next()方法越过元素A,然后remove()用来删除next()越过的对象。也就是说remove()删除的是next()返回的对象,如果事先没有用next()返回对象就调用remove()方法,会抛出异常.

说到这里,在简单说说迭代器遍历和普通遍历的区别:

如果是普通遍历,大部分会这样实现
List list = new ArrayList();
		list.add("A");list.add("B");list.add("C");
		
		for(int i=0;i<list.size();i++ ){
			String s = (String) list.get(i);
			System.out.println(s);
		}

那么很明显,对于这种遍历,我们总是都事先知道集合的内部结构,访问代码和集合本身是紧密耦合的,无法将访问逻辑从集合类和客户端代码中分离出来.同时每一种集合对应一种遍历方法,客户端代码无法复用.那么当集合种类变多时,代码并不友好.而迭代器对不同集合类使用同样的逻辑来遍历集合,意思就是不用关注集合本身是怎样的,只需要控制iterator就好。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值