📜  Java中的可迭代接口(1)

📅  最后修改于: 2023-12-03 15:31:58.406000             🧑  作者: Mango

Java中的可迭代接口

什么是可迭代接口?

可迭代接口是Java中一个非常重要的接口,它定义了一种让对象自己来实现遍历自身的方式。这个接口中只有一个方法,就是iterator()方法,它返回一个Iterator对象,这个对象可以通过next()方法来依次访问容器中的元素。

使用可迭代接口

在Java中,所有实现了Iterable接口的容器都可以使用for-each循环来遍历容器中的元素。例如:

List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("C++");

for(String s : list){
    System.out.println(s);
}

输出:

Java
Python
C++

我们可以看到,List实现了Iterable接口,因此可以使用for-each循环来遍历其中的元素。

实现可迭代接口

如果你自己编写了一个容器类,并且希望它也能像List那样使用for-each循环遍历其中的元素,那么你需要实现Iterable接口,并且在实现类中提供一个iterator()方法,返回一个实现了Iterator接口的迭代器对象。例如:

public class MyList<T> implements Iterable<T>{
    private T[] array;
    private int size;

    public MyList(int initialCapacity){
        array = (T[]) new Object[initialCapacity];
        size = 0;
    }

    public void add(T e){
        array[size++] = e;
    }

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

    private class MyIterator implements Iterator<T>{
        private int cursor;

        public MyIterator(){
            cursor = 0;
        }

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

        @Override
        public T next() {
            return array[cursor++];
        }

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

我们定义了一个MyList类,它实现了Iterable接口,并且在实现类中提供了一个iterator()方法,返回了一个实现了Iterator接口的迭代器对象。为了让你更加明确,我们在这里给出了这个迭代器对象的完整代码片段。

在上面的例子中,我们定义了一个私有内部类MyIterator,它实现了Iterator接口,并且提供了hasNext()next()方法来实现容器元素的遍历。

总结

在Java中,可迭代接口是一个非常重要的接口,它定义了一种让对象自己来实现遍历自身的方式。我们可以通过实现Iterable接口来让自己的容器类也能够使用for-each循环。