`

Foreach与迭代器

    博客分类:
  • java
阅读更多
到目前为止,foreach语法主要用于数组,但是它也可以应用于任何Collection对象。你实际上已经看到过很多使用ArrayList时用到它的示例,下面是一个更通用的证明:

import java.util.*;

public class ForEachCollections {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		Collection<String> cs = new LinkedList<String>();
		Collections.addAll(cs, "Take the long way home".split(" "));
		for(String s : cs) {
			System.out.print("'" + s + "' ");
		}
	}

} /* Output:
'Take' 'the' 'long' 'way' 'home'
*///:~
   由于cs是一个Collection,所以这段代码展示了能够与foreach一起工作是所有Collection对象的特性。
   之所以能够工作,是因为Java SE5引入了新的被称为Iterable的接口,该接口包含一个能够产生Iterator的iterator方法,并且Iterable接口被foreach用来在序列中移动。因此如果你创建了任何实现Iterable的类,都可以将它用于foreach语句中:

package com.mldn.collection;

import java.util.Iterator;

public class IterableClass implements Iterable<String>{

	private String[] words = ("And that is how we know the Earth to be banana-shaped.").split(" ");
	
	public static void main(String[] args) {	
	/*	for(String s : new IterableClass()) {
			System.out.print(s + " ");
		}	*/	
		IterableClass ic = new IterableClass();
		Iterator<String> it = ic.iterator();
		while(it.hasNext()) {
			System.out.print(it.next() + " ");
		}
	}

	public Iterator<String> iterator() {	
		return new Iterator<String>() {
			private int index = 0;

			public boolean hasNext() {				
				return index < words.length;
			}

			public String next() {
				return words[index++];
			}

			public void remove() {  // Not implemented				
				throw new UnsupportedOperationException();
			}
		};		
	}
}


分享到:
评论

相关推荐

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

    7. **迭代器模式与foreach循环**:Java 5引入的增强for循环(也称为foreach循环),底层就是迭代器模式的实现。例如: ```java for (Type element : collection) { // 处理element } ``` 这样的代码简洁且易于...

    C#设计模式迭代器示例

    学习和实践迭代器模式对于任何C#开发者来说都是重要的,因为它可以帮助你编写更灵活、可维护的代码,同时也使你的代码与诸如 LINQ 这样的高级特性更好地集成。通过理解和应用迭代器模式,你可以更好地管理数据集合,...

    迭代器源码

    `GetEnumerator`方法实际上是一个迭代器,当被外部代码(如foreach循环)调用时,会返回一个`IEnumerator&lt;int&gt;`对象,该对象可以通过`MoveNext()`和`Current`属性遍历序列。 在我们的“迭代器Demo”项目中,可能...

    迭代器、分部类、索引器.

    迭代器、分部类和索引器是编程中常见的概念,尤其在面向对象的语言中扮演着重要的角色。这里我们将深入探讨这些主题,并结合C#语言的特性进行详细讲解。 首先,我们来了解一下**迭代器**。迭代器是访问集合元素的一...

    数组方法ES6迭代器

    数组方法与迭代器相结合,为开发者提供了更加高效和灵活的数据操作方式。在本篇文章中,我们将深入探讨数组方法和ES6迭代器的相关知识点。 首先,让我们了解什么是迭代器。迭代器是一种协议,它定义了访问一系列值...

    总结javascript中的六种迭代器

    1.forEach迭代器 forEach方法接收一个函数作为参数,对数组中每个元素使用这个函数,只调用这个函数,数组本身没有任何变化 //forEach迭代器 function square(num){ [removed](num + ' ' + num*num + ' '); } ...

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

    ### 迭代器与增强型for循环 在实际开发中,我们经常看到增强型for循环(也称为foreach循环)被用于遍历集合,其实内部也是利用了迭代器的原理。增强型for循环的语法更加简洁,但它隐藏了迭代器的细节,使得代码更加...

    Iterator迭代器讲解

    ### Iterator迭代器详解 #### 一、Iterator简介与概念 在Java编程语言中,`Iterator`接口是一个重要的组件,它提供了遍历集合的基本方法。`Iterator`的主要作用是在不暴露集合内部结构的情况下,顺序访问集合中的...

    匿名方法、迭代器 匿名方法、迭代器

    比如,在LINQ(Language Integrated Query)中,匿名方法常与迭代器一起使用,实现复杂的查询操作: ```csharp var evenNumbers = numbers.Where(x =&gt; x % 2 == 0).OrderByDescending(x =&gt; x); ``` 这里,`Where`...

    迭代器模式1

    迭代器模式是一种设计模式,它允许程序以特定的顺序遍历集合对象的元素,而无需直接暴露集合的内部结构。这种模式的核心在于提供一个独立于集合类的迭代器类,使得用户可以按照需要的方式遍历集合,同时也保护了集合...

    joomla迭代器的用法

    本文将详细讨论如何在Joomla开发中使用迭代器,以及与传统遍历方法的比较。 首先,让我们了解什么是迭代器。迭代器是一种设计模式,它定义了一个访问集合元素的接口,同时不暴露其底层表示。在PHP5中,引入了多个...

    C#学习笔记整理-迭代器模式介绍

    在C#中,`foreach`循环背后就是迭代器模式的实现,可以轻松地遍历任何实现了`IEnumerable`接口的对象。 4. **C#中的迭代器和yield关键字** - C#语言提供了一种更简洁的迭代器实现方式,通过`yield return`关键字。...

    java设计模式之迭代器模式

    在实际应用中,我们可以将迭代器模式与现实生活中的场景相联系。比如,参观博物馆时,游客(客户)并不需要了解展品的存放方式,只需通过导游(迭代器)指引,依次欣赏每个展品(元素)。这正是迭代器模式的体现,它...

    java基础 集合-22-迭代器设计模式

    2. **集合与迭代器的关系** 集合类通常提供一个`iterator()`方法,返回一个实现了`Iterator`接口的对象。这意味着每个集合都可以被迭代,这符合Java集合框架的设计原则。 3. **迭代器的分类** - **正向迭代器**:...

    [行为型模式]迭代器模式的理解

    在C++中,我们可以使用迭代器模式来实现类似Java或C#中的foreach循环功能。 在给定的资源中,`IteratorPattern.cpp`和`IteratorPattern.h`是实现迭代器模式的源代码文件。通常,`IteratorPattern.cpp`包含类的实现...

    迭代器的使用.docx

    在计算机科学中,迭代器是一种设计模式,它提供了一种方法来顺序访问集合对象的元素,而无需暴露其底层的表示。迭代器模式在Java编程语言中得到了广泛的应用,特别是在处理集合类,如ArrayList、LinkedList等时。在...

    22 迭代器模式:银行的点钞机.pdf

    在JavaScript中,我们可以轻松地使用内置的`forEach`方法来遍历数组,这就是迭代器的一种体现。但在早期版本的JavaScript(如IE9之前),我们需要使用`for`循环自行实现迭代。 例如,jQuery库中的`$.each`函数就是...

    Java中的迭代器和foreach原理

    Java中的迭代器(Iterator)和foreach循环是两种常用的遍历集合和数组的方式。迭代器模式是一种行为设计模式,它的核心作用在于允许用户遍历任何集合或聚合对象的元素,而无需暴露其底层结构。在Java中,迭代器主要...

    php splXML迭代器例子

    其中一个非常有用的功能是 SPL XML 迭代器,它允许开发者以迭代的方式处理XML文档,使得处理复杂的XML数据变得更为便捷。在本篇文章中,我们将深入探讨`SPL XML 迭代器`以及如何通过一个实际的`spliterator.php`文件...

    C#面向对象设计模式纵横谈(18):(行为型模式) Iterator 迭代器模式 (Level 300)

    迭代器模式是面向对象设计中的一个行为型模式,它的主要目的是提供一种方法来顺序访问聚合对象的元素,而又不暴露其底层表示。在C#中,迭代器模式的应用广泛且重要,尤其对于集合类的遍历操作至关重要。本文将深入...

Global site tag (gtag.js) - Google Analytics