用Iterator模式实现遍历集合
Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。
例如,如果没有使用Iterator,遍历一个数组的方法是使用索引:
for(int i=0; i<array.size(); i++) { ... get(i) ... }
而访问一个链表(LinkedList)又必须使用while循环:
while((e=e.next())!=null) { ... e.data() ... }
以上两种方法客户端都必须事先知道集合的内部结构,访问代码和集合本身是紧耦合,无法将访问逻辑从集合类和客户端代码中分离出来,每一种集合对应一种遍历
方法,客户端代码无法复用。
更恐怖的是,如果以后需要把ArrayList更换为LinkedList,则原来的客户端代码必须全部重写。
为解决以上问题,Iterator模式总是用同一种逻辑来遍历集合:
for(Iterator it = c.iterater(); it.hasNext(); ) { ... }
奥秘在于客户端自身不维护遍历集合的"指针",所有的内部状态(如当前元素位置,是否有下一个元素)都由Iterator来维护,而这个Iterator
由集合类通过工厂方法生成,因此,它知道如何遍历整个集合。
客户端从不直接和集合类打交道,它总是控制Iterator,向它发送"向前","向后","取当前元素"的命令,就可以间接遍历整个集合。
首先看看java.util.Iterator接口的定义:
public interface Iterator {
boolean hasNext();
Object next();
void remove();
}
依赖前两个方法就能完成遍历,典型的代码如下:
for(Iterator it = c.iterator(); it.hasNext(); ) {
Object o = it.next();
// 对o的操作...
}
最后给个完整的示例:
Collection c = new ArrayList();
c.add("abc");
c.add("xyz");
for(Iterator it = c.iterator(); it.hasNext(); ) {
String s = (String)it.next();
System.out.println(s);
}
如果你把第一行代码的ArrayList换成LinkedList或Vector,剩下的代码不用改动一行就能编译,而且功能不变,这就是针对抽象编程的
原则:对具体类的依赖性最小
分享到:
相关推荐
熟练掌握`Iterator`的使用,能够提高代码的灵活性和可读性,是每个Java开发者必备的技能之一。 8. **图片资源:Java.jpg** 可能这个图片文件是用来辅助理解`Iterator`概念的,比如它可能包含了一个迭代过程的流程...
### JAVA中的Iterator的用法详解 #### 一、概述 在Java编程语言中,`Iterator`接口扮演着遍历集合的重要角色。它提供了一种方式,使得...掌握`Iterator`的使用方法对于任何Java程序员来说都是必不可少的技能之一。
同时,Iterator接口也可以与其他Java集合框架类库结合使用,例如List、Set、Map等。 在实际开发中,开发者可以使用Iterator接口来遍历集合,例如: ```java List<String> list = new ArrayList(); list.add("Apple...
根据提供的文件信息,本文将深入探讨Java中的`java.util.Iterator`接口及其在集合类中的应用。我们将从以下几个方面进行详细解析: ### 一、集合类的根接口:Collection `Collection`接口是Java集合框架的基础,它...
这个资源的目的是通过模拟Java ArrayList的Iterator实现,帮助理解Iterator设计模式。 首先,我们来详细解释一下ArrayList和Iterator的概念。ArrayList是一个可变大小的数组,它允许我们在任何位置插入和删除元素。...
### Java源码分析:深入探讨Iterator模式 #### 一、引言 在Java编程语言中,集合框架(`java.util`包)提供了多种容器类来存储对象,如`List`、`Set`和`Map`等。为了遍历这些容器中的元素,Java引入了迭代器模式...
Java Iterator接口和ListIterator接口分析 Java Iterator接口和ListIterator接口是Java集合框架中的两个重要接口,分别用于迭代集合中的元素和列表中的元素。在本文中,我们将详细介绍Java Iterator接口和...
Java Iterator(迭代器) Java Iterator(迭代器)是 Java 中的一种机制,用于访问和遍历集合中的元素。它提供了一种通用的方式来访问集合中的元素,不管集合的类型是 ArrayList还是 HashSet。 Iterator 是 Java ...
Java集合使用Iterator删除元素 Java集合使用Iterator删除元素是Java编程中的一种常见操作。Iterator是Java集合框架中的一种接口,用于遍历集合中的元素。在使用Iterator遍历集合时,如果需要删除某些元素,就需要...
一个Iterator的实例1---马克-to-win java视频迭代器的详细描述
在上述描述中,开发者遇到了一个关于`iterator`标签嵌套使用的问题,涉及到`LinkedHashMap`存储的数据结构。让我们深入探讨这个问题。 首先,`Timereport_infoAction`类中有几个关键的属性,包括`timereport_infos`...
通过本文档提供的代码示例,我们将深入探讨`<s:iterator>`标签的使用方法及其与不同数据类型(如简单对象、列表、数组)的交互方式。 ### 一、`<s:iterator>`标签的基本用法 `<s:iterator>`标签允许你在JSP页面上...
"Java Iterator接口遍历单列集合迭代器原理详解" Java Iterator接口是Java集合框架中的一员,它主要用于遍历集合中的所有元素。 Iterator接口也是Java集合中的一员,但它与Collection、Map接口有所不同,Collection...
### 示例iterator使用及技巧 在本篇文章中,我们将详细介绍如何使用`Iterator`接口以及相关的技巧。`Iterator`是Java集合框架中的一个重要组成部分,它提供了一种遍历集合元素的方法。通过本文的学习,读者将能够更...
本文以java中的容器为例,模拟Iterator的原理。 参考:马士兵 Java设计模式 Iterator 1.首先定义一个容器Collection接口. 2.定义一个Iterator迭代器的接口 3.定义一个ArrayList,实现Collection接口,并写一个实现了...
在深入探讨Java中Iterator(迭代器)的一般用法之前,我们先来理解一下迭代器在编程中的核心价值。迭代器是一种设计模式,其主要作用在于遍历集合中的元素,而无需开发者知晓集合的具体实现细节。这使得代码更加灵活、...
6. Java Iterator使用:Iterator接口用于遍历集合元素,如List、Set等。通过调用hasNext()检查是否还有下一个元素,然后用next()获取并返回当前元素。注意,迭代器在修改集合时可能会抛出...
总结来说,这个实例展示了如何在Java中使用`Iterator`和`Iterable`接口处理自定义数据结构,并利用`JSONArray`将这些数据转换为JSON格式。这种技能对于开发需要处理大量数据和进行数据交换的Java应用至关重要。理解...
Java Iterator迭代器 Java Iterator迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为与被遍历的对象分离。这种模式可以让我们无需关心该序列的底层结构是什么样子的,只要拿到这个对象,使用迭代器就...
在Java编程语言中,迭代器模式(Iterator Pattern)是一种常用的设计模式,用于顺序访问集合对象中的元素,而无需暴露其底层表示。这种模式提供了一种方法来访问一个聚合对象的元素,而无需暴露该对象的内部结构。在...