美文网首页
Java集合Iterator迭代器

Java集合Iterator迭代器

作者: dlihasa | 来源:发表于2019-03-22 15:05 被阅读0次

什么是迭代器?

在Java中,有很多的数据容器,对于这些的操作有很多的共性。Java采用了迭代器来为各种容器提供了公共的操作接口(各个容器实现Iterable接口)。这样使得对容器的遍历操作与其具体的底层实现相隔离,达到解耦的效果。

Iterator在1.8中加入了forEachRemaining(Consumer action):使用Lambda表达式来遍历集合元素。

迭代器Iterator接口中三个常用的方法:

迭代器使用

public static void main(String[] args) {
        List<String> list=new ArrayList<>();
        list.add("111");
        list.add("222");
        list.add("333");
        for(Iterator<String> it=list.iterator();it.hasNext();)
        {
            System.out.println(it.next());
        }
}

打印结果:

111
222
333

我们来看一个Iterator的实现类

public class ArrayIterator implements Iterator<Object> {
    private final Object array;
    private int currentIndex = 0;
    
    public ArrayIterator(Object array) {
        if (!array.getClass().isArray()) {
            throw new IllegalArgumentException("not an array");
        }
        this.array = array;
    }
    
    @Override
    public boolean hasNext() {
        return currentIndex < Array.getLength(array);
    }

    @Override
    public Object next() {
        return Array.get(array, currentIndex++);
    }
    
    @Override
    public void remove() {
        throw new UnsupportedOperationException("cannot remove items from an array");
    }
}

hasNext()方法比较了数组容器的长度和当前位置的大小并返回一个布尔型值。
next()方法先将haxNext()方法中currentIndex位置的值取出,然后将位置向后移动一个。

相关文章

网友评论

      本文标题:Java集合Iterator迭代器

      本文链接:https://www.haomeiwen.com/subject/kkalvqtx.html