📅  最后修改于: 2023-12-03 15:31:58.406000             🧑  作者: Mango
可迭代接口是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
循环。