Java Iterator 使用
?學(xué)而時習(xí)之,溫故而知新.
?
?迭代器是一種模式、詳細(xì)可見其設(shè)計模式,可以使得序列類型的數(shù)據(jù)結(jié)構(gòu)的遍歷行為與被遍歷的對象分離,即我們無需關(guān)心該序列的底層結(jié)構(gòu)是什么樣子的。只要拿到這個對象,使用迭代器就可以遍歷這個對象的內(nèi)部。
(1) 使用方法iterator()要求容器返回一個Iterator。第一次調(diào)用Iterator的next()方法時,它返回序列的第一個元素。注意:iterator()方法是java.lang.Iterable接口,被Collection繼承。
(2) 使用next()獲得序列中的下一個元素。
(3) 使用hasNext()檢查序列中是否還有元素。
(4) 使用remove()將迭代器新返回的元素刪除。
使用方法對比
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class Main {public static void main(String[] args) {List list = new ArrayList();//實例化集合對象list.add("A"); //添加數(shù)據(jù)list.add("B");list.add("C");list.add("D");//迭代器用于while循環(huán)Iterator iterator = list.iterator();//創(chuàng)建迭代器while (iterator.hasNext()) { //判斷是否有下一個元素String str = (String) iterator.next(); //獲取集合元素System.out.println(str);}//迭代器用于for循環(huán)for (Iterator iterator1 = list.iterator(); iterator1.hasNext(); ) {String str = (String) iterator1.next();System.out.println(str);}//forfor (int i=0;i<list.size();i++){System.out.println(list.get(i));}//foreachfor (Object str:list){System.out.println(str);}}
}
用法的區(qū)分:
for一般可以用于簡單的順序集合,并且可以預(yù)測集合的大小;
foreach可以遍歷任何集合或者數(shù)組,但是使用者需要知道遍歷元素的類型。
iterator不需要知道元素類型和元素大小,通過hasnext()判斷是否遍歷完所有元素
for循環(huán)與迭代器的對比:
*?效率上各有各的優(yōu)勢:
>?ArrayList對隨機(jī)訪問比較快,而for循環(huán)中使用的get()方法,采用的即是隨機(jī)訪問的方法,
? ? ? ? ? ? ? ? ?因此在ArrayList里for循環(huán)快。
>?LinkedList則是順序訪問比較快,Iterator中的next()方法采用的是順序訪問方法,
? ? ? ? ? ? ? ? ?因此在LinkedList里使用Iterator較快。
>?主要還是要依據(jù)集合的數(shù)據(jù)結(jié)構(gòu)不同的判斷。
總結(jié)
以上是生活随笔為你收集整理的Java Iterator 使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大体积混凝土的定义,如何套用定额??
- 下一篇: 微信小程序修改标题