java 中的Iterable接口实现

定义一个线性表
我们不用getset方法,直接让他实现迭代器接口,从而完成遍历。

package structure;

import java.util.Iterator;

public class SequenceList<T> implements Iterable<T> {
    private T[] eles;
    private int N;

    public SequenceList(int capacity) {
        this.eles = (T[]) new Object[capacity];
        this.N = 0;
    }


    public void insert(T t) {
        eles[N++] = t;
    }
    
}

重写接口方法,因为Iterator是接口,我们没法直接new出来,所以下面写了一个类来实现这个接口

  @Override
    public Iterator<T> iterator() {
        return new SIterator();
    }

    private class SIterator implements Iterator {
        private int cusor;

        @Override
        public boolean hasNext() {
            return cusor < N;
        }

        @Override
        public Object next() {
            return eles[cusor++];
        }

        public SIterator() {
            this.cusor = 0;
        }
        
    }

main方法

    public static void main(String[] args) {
        SequenceList<String> s1 = new SequenceList<String>(10);
        s1.insert("!");
        s1.insert("2");
        s1.insert("2");
        s1.insert("4");
        s1.insert("9");
        Iterator<String> it = s1.iterator();
        while (it.hasNext()) {
            String s = it.next();
            System.out.println(s);
        }
        // for (String s : s1) {
        // System.out.println(s);
        // }
    }

泛型一定要标注上。

你可能感兴趣的:(java 中的Iterable接口实现)