`

JAVA基础:迭代与迭代器

    博客分类:
  • JAVA
阅读更多
    while,do-while和for用来控制循环,有时将它们划分为"迭代语句".语句会重复执行,直到起控制作用的布尔表达式(Boolean-expression)得到"假"的结果为止.

    迭代器(也是一种设计模式)的概念可以用于达成不重写代码就可以应用于不同类型的容器.迭代器是一个对象,它的工作是遍历并选择序列中的对象,而客户端程序员不必知道或关心该序列底层的结构(也就是不同容器的类型).此外,迭代器通常被称为"轻量级"对象:创建它的代价小.

    Java的Iterator就是一种迭代器(只能单向移动),它只能用来:
        1,使用方法iterator()要求容器返回一个Iterator.第一次调用Iterator的next()方法时,它返回序列的第一个元素;
        2,使用next()获得序列中的下一个元素;
        3,使用hasNext()检查序列中是否还有元素;
        4,使用remove()将迭代器新近返回的元素删除.

package iterator;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

/*
 * 通用的迭代器;
 * 将遍历一个序列的操作与此序列底层结构相分离;
 * 因为Iterator隐藏了容器底层的结构,所以,IteratorAll.printAll并不知道,也不关心此Iterator是从何容器而来;
 * 取得一个对象容器,遍历容器以对每个对象执行动作;
 * 该方法间接使用了Object.toString()方法,因为更具通用性;
 */
class IteratorAll {
	static void printAll(Iterator e) {
		while (e.hasNext()) {
			System.out.println("\t" + e.next());
			/*
			 * 虽然不必要,但仍然可以明确地进行类型转换,效果与调用toString()相同;
			 * System.out.println("\t" + (Integer)e.next());
			 * 通常Object提供的方法并不能满足需求,所以又要考虑类型转换的问题,
			 * 必须假设你已经取得了某个特定类型的序列的Iterator,并将对结果对象做类型转换(如果类型错误会得到一个运行时异常).
			 */
		}
	}
}

/*
 * 创建两种不同的容器,一个ArrayList和一个HashMap,均使用Integer填充
 */
public class IteratorDemo {
	public static void main(String[] args) {
		// 创建ArrayList,并填充Integer类型
		List<Integer> list = new ArrayList<Integer>();
		for (int i = 0; i < 10; i++) {
			list.add(i);
		}
		// 创建HashMap,并填充Integer类型
		Map<Integer, Integer> map = new HashMap<Integer, Integer>();
		for (int i = 0; i < 10; i++) {
			map.put(i, i);
		}
		System.out.println("List");
		// 调用上面的通用迭代器,打印ArrayList
		IteratorAll.printAll(list.iterator());
		System.out.println("Map");
		// 对HashMap而言,entrySet()方法生成一个由Map.entry对象组成的Set,Map.entry对象包含映射中每个元素的"键"和"值"
		// 调用上面的通用迭代器,打印HashMap
		IteratorAll.printAll(map.entrySet().iterator());
	}
}
分享到:
评论

相关推荐

    Java试题-4:迭代器的应用

    Java试题-4:迭代器的应用 查询修改集合可以用集合自身的方法来实现 也可以用迭代器来实现 区别在于用迭代器对集合的修改操作更加安全

    java 迭代及迭代器的小例子

    在Java编程语言中,迭代是遍历集合对象(如数组、列表或集合)的重要机制,而迭代器(Iterator)则是实现这一机制的关键工具。这里,我们通过一个小例子来深入理解Java中的迭代和迭代器。 首先,我们需要了解什么是...

    java迭代器模式实现正反向遍历

    具体迭代器实现了迭代器接口,并与具体的聚合类型协同工作。在示例中,有两个具体迭代器类: - `ConcreteIterator1`:实现正向遍历。 - `ConcreteIterator2`:实现反向遍历。 ### 实现细节 - `ConcreteIterator1`...

    【Java设计模式】(1)迭代器模式Iterator

    总之,迭代器模式是Java开发中非常基础且重要的设计模式,它使得我们可以以统一的方式遍历各种类型的集合,提高了代码的可读性和可维护性。在实际开发中,正确理解和应用迭代器模式能够帮助我们编写出更加灵活和优雅...

    java体系结构之迭代器模式.rar

    6. **Java集合框架中的迭代器**:除了基础的`Iterator`接口,Java还提供了`ListIterator`,它增加了`hasPrevious()`,`previous()`,`nextIndex()`和`previousIndex()`等方法,专为列表设计。 7. **迭代器模式与...

    java专题-迭代器

    ### Java专题:深入理解迭代器模式 #### 引言 迭代器模式是设计模式中的一种,主要用于处理集合或容器中的元素遍历问题。在Java中,迭代器模式被广泛运用,尤其是在处理各种集合如`List`、`Set`、`Map`等时,通过...

    7.java迭代器接口.zip

    7.java迭代器接口.zip7.java迭代器接口.zip7.java迭代器接口.zip7.java迭代器接口.zip7.java迭代器接口.zip7.java迭代器接口.zip7.java迭代器接口.zip7.java迭代器接口.zip7.java迭代器接口.zip7.java迭代器接口.zip...

    65丨迭代器模式(上):相比直接遍历集合数据,使用迭代器有哪些优势?1

    在大多数编程语言中,迭代器已经被作为基础库的一部分提供,如Java、Python等。 迭代器模式的核心组件包括容器(或聚合对象)和迭代器。容器存储一组对象,而迭代器则负责按顺序访问这些对象。为了遵循面向接口编程...

    第二十讲:迭代模式

    在Java、C#等面向对象编程语言中,迭代器模式是常用的一种行为设计模式,它允许我们遍历集合对象的元素,而无需暴露集合的内部结构。 在标题“第二十讲:迭代模式”中,我们可以理解这是一个教学系列的第20部分,...

    设计模式--迭代器模式java例子

    在Java中,迭代器模式广泛应用于集合框架,如ArrayList、LinkedList等。本示例将深入探讨如何在Java中实现和使用迭代器模式。 首先,我们需要理解迭代器模式中的几个关键角色: 1. **聚合类(Aggregate)**:它...

    迭代器模式.rar之java设计模式

    在Java中,迭代器模式是通过接口和实现类来实现的,让我们深入探讨一下这个模式。 首先,我们要理解迭代器模式的核心概念。在软件工程中,迭代器模式允许我们遍历一个集合对象的所有元素,而无需暴露集合的内部结构...

    java Iterator迭代器的使用

    迭代器的主要方法包括`hasNext()`(检查集合中是否存在下一个元素)、`next()`(返回当前元素并移动到下一个)和`remove()`(删除当前元素)。 2. **获取迭代器** 要使用`Iterator`,首先需要通过调用集合类的`...

    Android Ap 开发 设计模式第一篇:迭代器模式

    例如,对于ArrayList,我们可以这样使用迭代器: ```java ArrayList&lt;String&gt; list = new ArrayList(); list.add("Element1"); list.add("Element2"); list.add("Element3"); Iterator&lt;String&gt; iterator = list....

    Java迭代器模式:遍历集合的优雅之舞

    - **解耦**:迭代器模式将访问逻辑与容器实现分离开来,使得容器的改变不会影响到使用它的客户端代码,提高了系统的可维护性和灵活性。 - **扩展性**:可以为不同类型的容器提供不同的迭代器实现,从而方便地添加新...

    迭代器模式Demo

    在Java、C#等面向对象语言中,迭代器模式被广泛使用。 迭代器模式主要包含以下角色: 1. **聚合角色(Aggregate)**:存储一组对象,提供创建迭代器的接口。 2. **迭代器角色(Iterator)**:负责遍历聚合中的元素...

    java迭代器模式.rar

    迭代这个名词对于熟悉Java的人来说绝对不陌生。我们常常使用JDK提供的迭代接口进行java collection的遍历: Iterator it = list.iterator(); while(it.hasNext()){ ...而这就是关于迭代器模式应用很好的例子。

    Java学习之Iterator(迭代器)的一般用法

    例如,对于一个`ArrayList`列表`list`,你可以这样获取其迭代器: ```java Iterator&lt;String&gt; iterator = list.iterator(); ``` #### 遍历元素 一旦拥有了迭代器,就可以通过调用`next()`方法来访问集合中的下一个...

    迭代器模式java实现

    在Java中,迭代器模式的实现主要依赖于`java.util.Iterator`接口和`java.util.ArrayList`、`java.util.LinkedList`等集合类。 在Java中,迭代器模式的应用非常广泛,尤其是在处理集合数据时。`Iterator`接口定义了...

    设计模式之迭代器模式

    - **隐式迭代器**:在C++中,通过`begin()`和`end()`函数实现,迭代器通常隐含地与容器关联,可以直接通过操作符`++`进行遍历。 ### 三、迭代器模式的优点 1. **分离了遍历操作和聚合对象**:迭代器模式将遍历元素...

    JAVA迭代器模式.pptx

    标题和描述均提到了“JAVA迭代器模式”,这是一个在软件工程和面向对象编程中非常重要的设计模式,尤其在Java语言中被广泛运用。迭代器模式属于行为型模式,它的核心在于提供了一种方法来访问一个聚合对象中各个元素...

Global site tag (gtag.js) - Google Analytics