迭代器 是一種設(shè)計(jì)模式榴嗅,它是一個(gè)對(duì)象,它可以遍歷并選擇序列中的對(duì)象,而開發(fā)人員不需要了解該序列的底層結(jié)構(gòu)抹剩。迭代器通常被稱為“輕量級(jí)”對(duì)象撑帖,因?yàn)閯?chuàng)建它的代價(jià)小。
在Collection集合中都會(huì)實(shí)現(xiàn)terator澳眷,因此可以通過iterator()函數(shù)獲得一個(gè)iterator對(duì)象胡嘿,然后就可以利用提供的函數(shù)進(jìn)行相應(yīng)的輸出操作。
(1)iterator()方式是Java.lang.Iterator接口钳踊,被Collection實(shí)現(xiàn)衷敌。使用方法iterator()要求容器返回一個(gè)iterator。
(2)第一次調(diào)用Iterator的next()方法時(shí)箍土,它返回序列的第一個(gè)元素逢享,之后都會(huì)獲得序列中的下一個(gè)元素。
(3)使用hasNext()檢查序列中是否還有元素吴藻。
(4)使用remove()將迭代器新返回的元素刪除。
Java8中Iterator接口的源碼:
public interface Iterator<E>
{
boolean hasNext();//判斷是否下一個(gè)
E next();//獲取下一個(gè)
default void remove() //刪除
{
throw new UnsupportedOperationException("remove");
}
default void forEachRemaining(Consumer<? super E> action) {
Objects.requireNonNull(action);
while (hasNext())
action.accept(next());
}
}
實(shí)現(xiàn)例子:
list l = new ArrayList();
l.add("aa");
l.add("bb");
l.add("cc");
//方法一
for (Iterator iter = l.iterator(); iter.hasNext();)
{
String str = (String)iter.next();
System.out.println(str);
}
//方法二
Iterator iter2 = l.iterator();
while(iter2.hasNext())
{
String str = (String) iter2.next();
System.out.println(str);
}