iterator与iterable接口之间的区别
1.区别
-
Iterator是迭代器类,而Iterable是为了只要实现该接口就可以使用foreach,进行迭代.
Iterable中封装了Iterator接口,只要实现了Iterable接口的类,就可以使用Iterator迭代器了。 -
集合Collection、List、Set都是Iterable的实现类,所以他们及其他们的子类都可以使用foreach进行迭代。
2. 源码
Iterable源码
package java.lang;
import java.util.Iterator;
public interface Iterable<T> {
/**
* Returns an iterator over a set of elements of type T.
* @return an Iterator.
*/
Iterator<T> iterator();
}
Iterator源码
/**
* Iterator三个最重要对任何一个集合实例都可以用这三个方法进行遍历所有元素
**/
package java.util;
public interface Iterator<E> {
/**
* 使用hasNext()检查序列中是否还有元素
* Returns {@code true} if the iteration has more elements.
*/
boolean hasNext();
/**
* Returns the next element in the iteration.
*使用next()获得序列中的下一个元素
*/
E next();
/**
*使用remove()将迭代器新返回的元素删除
* Removes from the underlying collection the last element returned
*/
void remove();
}
3.集合迭代
//迭代器用于while循环
list alist = new ArrayList();
alist.add("asdfa");
alist.add("bbsdfs);
Iterator iter = alist.iterator();
while(iter.hasNext()){
String str = (String) iter.next();
System.out.println(str);
}