`
zhengdl126
  • 浏览: 2536487 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

实现Iterator接口

    博客分类:
  • php
PHP 
阅读更多

使对象可以像数组一样进行foreach循环,要求属性必须是私有。

 

 

<?php
class MyIterator implements Iterator
{
     private $var = array();

     public function __construct($array)
     {
         if (is_array($array)) {
            $this->var = $array;
         }
     }

     public function rewind() {
         echo "rewinding\n";
        reset($this->var);
     }

     public function current() {
        $var = current($this->var);
         echo "current: $var\n";
         return $var;
     }

     public function key() {
        $var = key($this->var);
         echo "key: $var\n";
         return $var;
     }

     public function next() {
        $var = next($this->var);
         echo "next: $var\n";
         return $var;
     }

     public function valid() {
        $var = $this->current() !== false;
         echo "valid: {$var}\n";
         return $var;
     }
}

$values = array(1,2,3);
$it = new MyIterator($values);

foreach ($it as $a => $b) {
     print "$a: $b\n";
}

/*          
输出:
rewinding
current: 1
valid: 1
current: 1
key: 0
0: 1
next: 2
current: 2
valid: 1
current: 2
key: 1
1: 2
next: 3
current: 3
valid: 1
current: 3
key: 2
2: 3
next:
current:
valid:

*/
?>

 

 

 

迭代器有一个简单的和经常被看到的接口

 

<?php
   function Iterator($array) // Constructor. Takes array to be traversed as a parameter. 构造函数。
使需要遍历的数组作为一个参数
   function reset() // Sets internal pointer to the first element 设置内部指针指向第一个元素
   function end() // Sets internal pointer to the last element 设置内部指针指向最后一个元素
   function seek($position) // Sets internal pointer to desired position 设置内部指针指向一个指定的元素
   function next() // Returns next element in the iteration 返回后一个元素
   function previous() // Returns previous element in the iteration 返回前一个元素
 ?>
分享到:
评论

相关推荐

    Java Iterator接口实现代码解析

    Java Iterator接口实现代码解析 Java Iterator接口是Java集合框架中的一部分,它提供了对集合元素的遍历和操作功能。Iterator接口的主要方法包括hasNext()、next()和remove(),它们分别用于判断是否还有更多元素、...

    Iterator接口

    需要注意的是,Iterator接口和ListIterator接口的实现需要遵循一定的规则,例如,Iterator接口的实现需要遵循Fail-Fast策略,即,如果集合在迭代期间被修改,将抛出ConcurrentModificationException异常。...

    模拟java ArrayList Iterator

    模拟ArrayList的Iterator实现,我们需要创建一个内部类,实现Iterator接口。这个内部类需要维护一个指向ArrayList实际元素的指针,以便于在迭代过程中跟踪当前位置。以下是一个简单的模拟实现: ```java public ...

    使用Iterator接口遍历集合元素

    Iterator 接口隐藏了各种 Collection 实现类的底层细节,向应用程序提供了遍历 Collection 集合元素的统一编程接口。 Iterator 接口定义了三个方法:boolean hasNext()、Object next() 和 void remove()。hasNext()...

    java Iterator接口和LIstIterator接口分析

    在本文中,我们将详细介绍Java Iterator接口和ListIterator接口的定义、方法、实现和应用场景。 Iterator接口 Iterator接口是Java集合框架中的一个基本接口,用于迭代集合中的元素。它取代了Java集合框架中的...

    第二十单元.pptx_电子版_pptx版

    课后练习通常会要求利用类(class)封装面向对象的轮播图,这可能涉及到创建一个Carousel类,其中包含表示图片数组的成员变量以及实现Iterator接口的方法。例如: ```javascript class Carousel { constructor...

    PHP迭代器接口Iterator用法分析

    Iterator接口包含以下五个抽象方法,这些方法必须在实现Iterator接口的类中被定义: 1. `current()`:返回当前索引游标所指向的元素值。这个方法在foreach循环中用于获取当前元素的值。 2. `key()`:返回当前索引...

    如何实现java Iterator迭代器功能

    自定义Iterator迭代器需要实现Iterator接口,并重写hasNext()、next()和remove()方法。例如: public class Gys&lt;T&gt; { private final static int default_capacity = 10; private int endIndex = 0; private ...

    【java系列文章】java 基础知识

    2. Java为什么不直接实现Iterator接口,而是实现Iterable? Java设计中,Collection类通常实现Iterable接口,而不是直接实现Iterator接口。这是因为Iterator接口中的next()和hasNext()方法依赖于迭代器的内部状态,...

    java集合使用大全

    迭代器其实就是集合的内部类(该类实现 Iterator 接口)。迭代器类内部主要功能函数——判断有没有元素,取出元素。 类集中主要用到的接口 * List&lt;E&gt; 接口:元素可以重复,存入元素的顺序与取出元素的顺序一致。...

    Java设计模式之Iterator模式

    所谓Iterator模式,即是...3.定义一个ArrayList,实现Collection接口,并写一个实现了Iterator接口的内部类。 4.编写测试程序TestMain 从以上可以看出,设计模式到处用到面向对象中的多态。接口调用子类中的函数

    徐奕E21614061软件构造实验71

    2. **ConcreteIterator(具体迭代器)**:实现Iterator接口,同时维护一个指向聚合对象中当前元素的指针,以便进行遍历。 3. **Aggregate(聚合)**:定义创建相应迭代器的接口。 4. **ConcreteAggregate(具体聚合...

    迭代器模式(Iterator)C++实现

    2. **迭代器(Iterator)**:迭代器对象实现了访问聚合对象元素的接口。它有一个指针,可以移动到聚合中的下一个元素。C++标准库中的迭代器通常提供`begin()`和`end()`函数,分别返回指向聚合开始和结束的迭代器。 3....

    PHP中的Iterator迭代对象属性详解

    如果需要遍历对象的所有属性,包括protected和private属性,我们必须让对象的类实现Iterator接口。 在上述示例代码中,定义了一个Team类,它实现了Iterator接口。Team类内部包含了数组info来存储属性值。在__...

    Java Iterator接口遍历单列集合迭代器原理详解

    1. 使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态) 2. 使用Iterator接口中的方法hasNext判断还有没有下一个元素 3. 使用Iterator接口中的方法next取出集合中的下一个元素 代码...

    程序设计模式作业十二(行为型模式二)1

    在 Java 语言中,迭代器模式可以通过实现 Iterator 接口来实现,该接口提供了 hasNext()、next() 等方法来访问和遍历聚合元素。 代码示例: ```java interface Aggregate { void add(Object obj); void remove...

    Iterator用法

    - `ConcreteIterator`:实现了Iterator接口,用于实际的迭代过程。 - `Aggregate`:表示容器,提供创建Iterator的方法。 #### Iterator的规范 在C++的STL中,所有的迭代器必须遵循一套规范,这包括: - 对象的...

    迭代器模式1

    - **实现**:在具体编程语言中,如Java,可以实现Iterator接口并定义相应的方法。 - **相关模式**:如访问者模式,它们都涉及到对象结构的遍历,但访问者模式更关注在遍历过程中执行操作。 在实际应用中,迭代器...

    深入探索Java集合框架:解密复杂的面试题和精准解析

    - 实现Iterator接口,重写hasNext()和next()方法,管理迭代状态和索引。 通过理解这些核心概念和差异,你将能够在面试中更自信地回答关于Java集合框架的问题,并在实际开发中更加灵活地运用这些工具。记住,不断...

Global site tag (gtag.js) - Google Analytics