zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Java 经典实例:自定义迭代器详解编程语言

2023-06-13 09:20:45 时间

编写自己的Iterator,实现Iterator接口,这里多说一句,实现Iterable后,可以用“foreach”循环遍历你的对象。

import java.util.Iterator; 

import java.util.NoSuchElementException; 

 * 演示Iterator和Iterable接口,并说明怎样编写一个用于对象数组的简单迭代器。 

public class AarrayIterator T implements Iterable T , Iterator T { 

 private final static String[] names = {"rose", "petunia", "tulip"}; 

 public static void main(String[] args) { 

 AarrayIterator String arrayIterator = new AarrayIterator (names); 

 // Java 5,6的方式 

 for (String s : arrayIterator) { 

 System.out.println(s); 

 // Java 8的形式 

 arrayIterator.forEach(System.out::println); 

 /** 

 * 要遍历的数据 

 **/ 

 protected T[] data; 

 protected int index = 0; 

 /** 

 * 构造一个AarryIterator对象。 

 * @param data 被迭代的对象数组 

 public AarrayIterator(final T[] data) { 

 setData(data); 

 /** 

 * 设置(重置)数组为给定的数组,重置迭代器。 

 * 参数d代表被迭代的数组对象。 

 * @param d 被迭代的数组对象 

 public void setData(final T[] d) { 

 this.data = d; 

 index = 0; 

 /** 

 * 如果不是末尾,返回true,例如,if next()语句将成功执行。 

 * 否则返回false,执行if next()语句会抛出异常。 

 * @return 

 public boolean hasNext() { 

 return index data.length; 

 /** 

 * 返回该数据的下一个元素 

 * @return 

 public T next() { 

 if (hasNext()) { 

 return data[index++]; 

 throw new NoSuchElementException("only " + data.length + " elements"); 

 public void remove() { 

 throw new UnsupportedOperationException("This demo Iterator does not implement the remove method"); 

 /** 

 * Iterator的方法 

 * @return 

 public Iterator T iterator() { 

 index = 0; 

 return this; 

}

执行结果:

rose 

petunia 

tulip 

rose 

petunia 

tulip

 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/15861.html

cjava