Java中为什么要使用迭代器?

一、推出迭代器(iterator)目的

1.从更高的角度进行分析,使用容器有一个缺点:要使用容器,就必须对容器的确切类型编程;如果我们暂且搁置一边,先来说说下面一种情况:
(1)如果你在代码中原本对List进行编程,但是后来感觉使用Set进行编程更方便一些,此时你应该怎么做?你的答案可能会按照Set的逻辑在重头写代码,它们只是使用容器,不知道或者说不关心容器的类型,那么如何在不重写代码就应用于不同类型的容器?

二、迭代器概念

1.迭代器是一种设计模式,它是一个对象,它的工作是遍历并选择序列中的对象,而客户端程序员不必知道该序列的底层结构。此外,迭代器通常被称为“轻量级”对象,因为创建它的代价小。ex:Java中的Iterator功能比较简单,并且只能单向移动:
  (1)使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。
  (2) 使用next()获得序列中的下一个元素。
  (3) 使用hasNext()检查序列中是否还有元素。
  (4) 使用remove()将迭代器新返回的元素删除。

2.未使用迭代器与使用迭代器遍历列表中元素,如下图代码中所示:
在这里插入图片描述
3.创建一个display()方法,它不必知道容器的确切类型,如下图所示:
在这里插入图片描述
注意,display()方法不包含任何有关它所遍历的序列的类型信息。展示出Iterator的真正威力:能够将遍历序列的操作与序列底层的结构分离。正是这样,我们有时会说:迭代器统一了对容器的访问方式。

发布了23 篇原创文章 · 获赞 15 · 访问量 6283

猜你喜欢

转载自blog.csdn.net/xiaoleilei666/article/details/102771101