您的位置:

迭代器Java

介绍

Java迭代器是一种设计模式,它是用于遍历集合类的接口。该接口提供了一种可以方便、有效地访问集合元素的方式,而不必暴露集合的内部工作原理。Java迭代器允许用户访问集合中的元素,并提供了在元素之间移动的方法。

Iterable是Java集合框架中的一个接口,它只有一个方法,即iterator()方法。该方法返回一个Iterator对象,该对象可以用于遍历集合。迭代器遍历集合时,不会显式暴露集合的内部实现,而是日益使用next()和hasNext()方法来轻松定位集合中的下一个元素。

正文

迭代器的基本用法


public class MyCollection<T> implements Iterable<T> { 
    private T[] elements; 

    public Iterator<T> iterator() { 
        return new MyIterator<>(); 
    } 

    private class MyIterator<E> implements Iterator<E> { 
        private int position; 

        public boolean hasNext() { 
            return position < elements.length; 
        } 

        public E next() { 
            if (!hasNext()) { 
                throw new NoSuchElementException(); 
            } 
            return (E) elements[position++]; 
        } 

        public void remove() { 
            throw new UnsupportedOperationException(); 
        } 
    } 
}

在此示例中,MyCollection类实现了Iterable接口,并覆盖了iterator()方法。该方法返回一个MyIterator对象,而MyIterator是MyCollection的静态内部类。

MyIterator包含3个方法:hasNext()、next()和remove()。此处,hasNext()和next()来自Iterator接口,而remove()是用于删除当前元素的方法。在MyIterator对象上,可以使用迭代器来遍历MyCollection类中的元素。

使用迭代器遍历元素


MyCollection<String> collection = new MyCollection<>(); 
collection.add("Java"); 
collection.add("Python"); 
collection.add("C++"); 

Iterator<String> iterator = collection.iterator(); 
while (iterator.hasNext()) { 
    System.out.println(iterator.next()); 
}

上例中,我们使用MyCollection类实例创建了一个集合对象,并将三个字符串添加到该对象中。然后,我们获取该集合的迭代器,并使用while循环遍历所有元素。在循环内部,我们打印每个元素的值。

实现Iterable接口


 public interface Iterable<T> { 
     Iterator<T> iterator(); 
 }

如上面代码所示,实现Iterable接口非常简单。只需在类声明中包含Iterable<T>,并从Iterable<T>实现iterator()方法,该方法返回一个Iterator<T>对象。然后,在您的类中,您可以使用一个foreach循环来遍历您的集合,如下例所示:


    MyCollection<String> collection = new MyCollection<>(); 
    collection.add("Java"); 
    collection.add("Python"); 
    collection.add("C++"); 
    for (String language : collection) { 
        System.out.println(language); 
    } 

小结

迭代器Java是遍历集合接口的设计模式之一。使用迭代器模式,用户可以轻松地遍历集合的元素,无需了解集合的内部实现。Java的迭代器使用Iterator接口定义访问集合元素的方法,并且迭代器的hasNext()和next()方法可用于轻松遍历集合中的元素。Iterable接口定义了可以返回迭代器的方法。