⑴ 在java中的迭代器有什麼作用啊
由於Java中數據容器眾多,而對數據容器的操作在很多時候都具有極大的共性,於是Java採用了迭代器為各種容器提供公共的操作介面。使用Java的迭代器iterator可以使得對容器的遍歷操作完全與其底層相隔離,可以到達極好的解耦效果。下面是一個使用迭代器遍歷一個序列化和非序列化容器的例子。
mport java.util.*;
publicclass TestIterator {
public static void main(String[] args) {
//創建一個list 它是一個序列化的數據
List list=new ArrayList();
//創建一個map,它是一個非序列化的數據
Map map=new HashMap();
for(int i=0;i<10;i++){
//向容器中添加數據
list.add(new String("list"+i) );
map.put(i, new String("map"+i));
}
//序列化了的數據創建迭代器。
Iterator iterList= list.iterator();//List介面實現了Iterable介面
//進行遍歷 如果容器中有下一個數據,就獲取下一個數據並列印出來
while(iterList.hasNext()){
String strList=(String)iterList.next();
System.out.println(strList.toString());
}
//創建非序列化數據的迭代器,要先將其序列化
Iterator iterMap=map.entrySet().iterator();
//進行遍歷 如果容器中有下一個數據,就獲取下一個數據並列印出來
while(iterMap.hasNext()){
Map.Entry strMap=(Map.Entry)iterMap.next();
System.out.println(strMap.getValue());
}
}
}
這些都是一些基礎的Java知識,在秒秒學的網站上查看資料。
⑵ Java中什麼叫迭代器
Iterator?不就是遍歷集合的嗎!用法網路一下,一大堆啊!不懂的多問問網路谷歌把,我上班有什麼不懂的都是網路谷歌!
⑶ java中for循環和迭代器哪個效率高,緊急求答
摘抄至 cxxyjsj 的回答,我個人贊成此觀點:
記錄的存取方式有兩種:一種是順序存儲,另一種是鏈接存儲
對於順序存儲的記錄可以根據其下標找到對應的記錄,而鏈接存儲(拿單鏈表為例)
則必須找到其前一個記錄的位置才能夠找到本記錄。
所以for循環便於訪問順序存儲的記錄,比如數組等
而迭代則更適用於鏈接存儲的記錄,雖然Java中有些底層通過鏈接存儲原理實現的集合
也可以通過下標獲取指定的記錄,但是其每次都必須從鏈表頭開始查找記錄,這樣會影響查找的效率
⑷ java中什麼叫迭代,什麼叫迭代器
迭代:
是重復反饋過程的活動,其目的通常是為了逼近所需目標或結果。每一次對過程的重復稱為一次「迭代」,而每一次迭代得到的結果會作為下一次迭代的初始值。
重復執行一系列運算步驟,從前面的量依次求出後面的量的過程。此過程的每一次結果,都是由對前一次所得結果施行相同的運算步驟得到的。例如利用迭代法*求某一數學問題的解。
對計算機特定程序中需要反復執行的子程序*(一組指令),進行一次重復,即重復執行程序中的循環,直到滿足某條件為止,亦稱為迭代。
迭代器(Iterator)模式:
又叫做游標模式,它的含義是,提供一種方法訪問一個容器對象中各個元素,而又不需暴露該對象的內部細節。
注意:Java的集合框架的集合類,有的時候也稱為容器。
從定義上看,迭代器是為容器而生,它本質上就是一種遍歷的演算法。因為容器的實現千差萬別,很多時候不可能知道如何去遍歷一個集合對象的元素。Java為我們提供了使用迭代的介面,Java的所有集合類丟失進行迭代的。
簡單的說,迭代器就是一個介面Iterator,實現了該介面的類就叫做可迭代類,這些類多數時候指的就是java.util包下的集合類。
總結:
迭代器,提供一種訪問一個集合對象各個元素的途徑,同時又不需要暴露該對象的內部細節。java通過提供Iterator和Iterable倆個介面來實現集合類的可迭代性,迭代器主要的用法是:首先用hasNext()作為循環條件,再用next()方法得到每一個元素,最後在進行相關的操作。
(4)java迭代器優勢擴展閱讀
首先,創建了一個List的集合對象,並放入了倆個字元串對象,然後通過iterator()方法得到迭代器。iterator()方法是由Iterable介面規定的,ArrayList對該方法提供了具體的實現,在迭代器Iteartor介面中,有以下3個方法:
1、hasNext()該方法英語判斷集合對象是否還有下一個元素,如果已經是最後一個元素則返回false
2、next()把迭代器的指向移到下一個位置,同時,該方法返回下一個元素的引用
3、remove() 從迭代器指向的Collection中移除迭代器返回的最後一個元素,該操作使用的比較少。
注意:從Java5.0開始,迭代器可以被foreach循環所替代,但是foreach循環的本質也是使用Iterator進行遍歷的。
⑸ java中for循環和迭代器哪個效率高
java中迭代器效率高
ArrayList實現了RandomAccess介面,RandomAccess介面為ArrayList帶來了什麼好處呢?
我們查看一下RandomAccess的源碼文檔,發現有這樣一段描述:
As a rule of thumb, aListimplementation should implement this interface if, for typical instances of the class, this loop:
for (int i=0, n=list.size(); i < n; i++)
list.get(i);
runs faster than this loop:
for (Iterator i=list.iterator(); i.hasNext(); )
i.next();
從描述中,可以看出實現RandomAccess介面的集合類,使用for循環的效率會比Iterator高。
RandomAccess介面為ArrayList帶來的好處:
1、可以快速隨機訪問集合。
2、使用快速隨機訪問(for循環)效率可以高於Iterator。