[英]List vs List iterator
我有一個清單:
List<Object> myList = new ArrayList<Object>();
要從此列表中獲取,有兩種方法:
1。
for(Object obj : myList )
{
// some code
}
2。
Iterator<Object> objIt = myList.iterator();
while(obj.hasNext()) {
Object obj = (Object)objIt.next();
// some code
}
我的問題是哪一個是內存效率和快速迭代?
他們做同樣的事情 - 增強的for
循環只是簡寫版本的語法糖(對於iterables;對於數組,它略有不同)。 除非你明確需要迭代器(例如調用remove()
),否則我會使用第一個版本。
有關編譯器執行的確切轉換的更多詳細信息,請參閱Java語言規范的第14.14.2節 。
使用Iterator
可以從定義class
外部更安全地訪問List
,因為您不會意外地覆蓋整個List
。 您一次只能訪問一個元素:頂部元素。
因此,我們使用的指南是僅在定義類中使用for each
方法,並且每當需要從外部訪問List時,必須使用迭代器。 這也強制了保持如何修改包含它的class
中的成員的邏輯的概念。 外部需要的所有復雜操作必須在class
內的public
方法中實現。
第一個是你所謂的“增強for循環”,它是在JDK 1.5+中引入的
迭代列表是更方便的方法。 此外,如果您使用它,則無需進行顯式鑄件。
從表現的角度來看,我認為兩者之間並沒有太大的區別。
迭代器:它在需要時為您提供結果,並且不會在內存中獲得所有結果
增強的for循環僅在其中使用迭代器。 所以兩者都是一樣的。
第一個更清楚,但如果你想在訪問列表時刪除元素,你唯一的選擇是迭代器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.