迭代器是一种很好用的迭代元素的方法,常用于Arraylist等Colloctions集合元素的迭代,如果需要自己实现迭代方法,能用foreach,就很漂亮了。代码如下。
import java.util.*; @SuppressWarnings("unchecked") // Demo是一个动态数组类,要实现迭代器的功能必须实现Iterable接口并写一些配套的类和方法 class Demo<T> implements Iterable<T>{ private Object[] arr; private int sz; private int endIndex = 0; Demo(int sz){ this.sz = sz; arr = new Object[sz]; } T[] add(T t){ if(endIndex==sz){ sz = sz*2; arr = Arrays.copyOf(arr, sz); } arr[endIndex++] = t; return (T[])arr; } T get(int index){ if(index>=endIndex)throw new RuntimeException("index outbound"); return (T)arr[index]; } int size(){ return endIndex; } class Itr implements Iterator<T>{ private int l = 0; private int r = endIndex; @Override public boolean hasNext() { // 确定存在下一个 return l==r?false:true; } @Override public T next() { // 返回当下元素 return (T)arr[l++]; } } public Iterator<T> iterator(){ return new Itr(); } public static void main(String[] args) { Demo<Integer> d = new Demo<>(10); d.add(1); d.add(2); Iterator<Integer> it = d.iterator(); for (Integer x: d) { System.out.println(x); } } }