Java迭代器

1.自定义实现迭代器

第一种方式:

public class IteratorTest {
    private String[] elements = {"a", "b", "c", "d", "f", "g"};
    private int size = elements.length;

    public Iterator iterator() {
        return new Itr();
    }

    private class Itr implements Iterator {

        int cursor = 0; //元素的索引
        int lastRet = 0; //删除比较索引的位置

        @Override
        public boolean hasNext() {
            return cursor != size;
        }

        @Override
        public Object next() {
            String value = elements[cursor];
            cursor++;
            return value;
        }

        @Override
        public void remove() {
            String reValue = elements[lastRet];
            int numMoved = size - lastRet - 1;
            if (numMoved > 0)
                System.arraycopy(elements, lastRet + 1, elements, lastRet,
                        numMoved);
            //lastRet++;
            elements[--size] = null;
        }
    }
}  

第二种方式:

public class IteratorTest {
    private String[] elements = {"a", "b", "c", "d", "f", "g"};
    private int size = elements.length;
    
    public Iterator iterator() {
        //匿名内部类
        return new Iterator() {
            int cursor = 0; //元素的索引
            int lastRet = 0; //删除比较索引的位置

            @Override
            public boolean hasNext() {
                return cursor != size;
            }

            @Override
            public Object next() {
                String value = elements[cursor];
                cursor++;
                return value;
            }

            @Override
            public void remove() {
                String reValue = elements[lastRet];
                int numMoved = size - lastRet - 1;
                if (numMoved > 0)
                    System.arraycopy(elements, lastRet + 1, elements, lastRet,
                            numMoved);
                //lastRet++;
                elements[--size] = null;
            }
        };
    }
    
} 

测试类

 public static void main(String[] args) {
        IteratorTest iteratorTest = new IteratorTest();
        Iterator iterators = iteratorTest.iterator();
        while (iterators.hasNext()) {
            System.out.println(iterators.next());
        }
    }

  

每天进步一丢丢

完成。

原文地址:https://www.cnblogs.com/xiaofuzi123456/p/12755418.html