编程语言
首页 > 编程语言> > Implementing Iterators in Java

Implementing Iterators in Java

作者:互联网

迭代器是一种很好用的迭代元素的方法,常用于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);
        }
    }
}

标签:sz,arr,Java,endIndex,int,private,Iterators,Implementing,return
来源: https://www.cnblogs.com/vctgo/p/15314581.html