Java Iterable和Iterator接口区别是什么?
Iterable 和 Iterator 是 Java 集合框架中的两个关键接口,用于支持遍历集合元素的操作。它们之间的区别如下:
import java.util.Iterator;
public class MyCollection implements Iterable<Integer> {
private int[] elements;
public MyCollection(int[] elements) {
this.elements = elements;
}
@Override
public Iterator<Integer> iterator() {
return new MyIterator();
}
private class MyIterator implements Iterator<Integer> {
private int currentIndex = 0;
@Override
public boolean hasNext() {
return currentIndex < elements.length;
}
@Override
public Integer next() {
return elements[currentIndex++];
}
@Override
public void remove() {
throw new UnsupportedOperationException("Remove operation not supported.");
}
}
public static void main(String[] args) {
int[] elements = {1, 2, 3, 4, 5};
MyCollection collection = new MyCollection(elements);
// 使用 foreach 循环遍历集合
for (int element : collection) {
System.out.println(element);
}
// 使用迭代器遍历集合
Iterator<Integer> iterator = collection.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
在以上示例中,MyCollection 类实现了 Iterable 接口,并提供了 iterator() 方法来返回一个 MyIterator 对象。MyIterator 类实现了 Iterator 接口,并提供了 hasNext() 和 next() 方法来遍历 MyCollection 中的元素。你可以使用 foreach 循环或者显式地使用迭代器来遍历集合中的元素。