`
sunlujing
  • 浏览: 180380 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Foreach 与迭代器

    博客分类:
  • j2se
阅读更多

在java编程中我会大量的使用 foreach 语法来遍历Collection对象 以及数组对象。

 

本文主要是解释一下foreach的实质以及如何改变 foreach遍历的行为

 

point A:

 

foreach语句之所以能够工作是因为 在JavaSe5 中引入的Iterable接口,该接口包含一个能产生Iterator对象的iterator方法。该Iterable 接口被foreach用来在序列中移动,任何实现Iterable 的接口类都可以被foreach遍历。

实现Itreable 接口主要是 重写 iterator方法,让该方法返回一个实现 iterator接口的对象。

interface iterator{

hasNext();

next();

        remove();

}

 

下面使用thinking in java 的一个例子来说明 怎么构建一个IterableClass

 

public class IterableClass implements Iterable<String>{

public Iterator<Object> iterator(){

return new Iterator<String>(){

boolean hasNext(){}

String next(){}

        void remove(){}

}

}

}

 

point B:

 

闲杂假设你有一个Iterable 类 比如 ArrayList<String>对象 arrayObj,

你使用 for(String str:arrayObj)只能实现默认顺序遍历。

如果你想使用逆序遍历,就需要重写一个生产 Iterator对象到方法,并把生产的ReverIterator 对象放入foreach语法中如下:

 

          for(String str:ReverArray.reverd()).

 

ex:

public class ReverArray extends ArrayList<String>{

public Iterable<String>  reversed(){

return new Iterable <String>(){

 

public Iterator<String> iterator(){

return new Iterator<String>(){

next();hasNext();remove();

//在这里改变对应方法的行为即可

}

}

}

}

}

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    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`包含类的实现...

    java常用的集合类 Iterator迭代器的使用 foreach循环 泛型 Collections、Arrays工具

    常用的集合类Iterator迭代器的使用foreach循环 泛型Collections、Arrays工具

    迭代器的使用.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`文件...

Global site tag (gtag.js) - Google Analytics