Iterator(迭代器)是一個接口唬党,它的作用就是遍歷容器的所有元素撩银。
Iterator iter = list.iterator(); // 注意iterator给涕,首字母小寫
一、Iterator接口簡介
iterator是為了實現(xiàn)對Java容器(collection)進行遍歷功能的一個接口额获。
在iterator實現(xiàn)了Iterator接口后够庙,相當于把一個Collection容器的所有對象,做成一個線性表(List)抄邀,而iterator本身是一個指針耘眨,開始時位于第一個元素之前。
Iterator的三個主要方法
1.1 Boolean hasNext();
判斷 iterator 內(nèi)是否存在下1個元素撤摸,如果存在毅桃,返回true,否則返回false准夷。(注意钥飞,這時上面的那個指針位置不變)
1.2 Object next();
返回 iterator 內(nèi)下1個元素,同時上面的指針向后移動一位衫嵌。
故读宙,如果不斷地循環(huán)執(zhí)行next()方法,就可以遍歷容器內(nèi)所有的元素了楔绞。
1.3 void remove();
刪除 iterator 內(nèi)指針的前1個元素结闸,前提是至少執(zhí)行過1次next();
(這個方法不建議使用,建議使用容器本身的romove 方法)
二酒朵、Iterator 接口的意義
遍歷1個ArrayList 和Linklist是十分容易的桦锄,遍歷1個Tree容器也不難,但是實現(xiàn)機制是完全不同蔫耽,而遍歷1個Set容器就無從下手了结耀。
所以Java設(shè)計了Iterator 這個接口,分別讓各種容器自己去重寫里面的hasNext()和next()方法匙铡。
不用關(guān)心各種容器的遍歷機制图甜,只要使用Iterator,會讓人覺得各種容器的遍歷方法都是一樣的鳖眼,這就是Java接口的重要意義黑毅。
三、如何使用Iterator
在Java的各種容器中钦讳,例如ArrayList矿瘦,HashSet等枕面,并沒有直接實現(xiàn)Iterator這個接口。所以ArrayList匪凡,HashSet容器內(nèi)是沒有hasnext()膊畴,next()的方法的掘猿,而是iterator() 這個方法病游,返回1個實現(xiàn)了Iterator接口的iterator對象。