2010-05-22 100 views
2

什麼是Iterator和集合? 這兩個有什麼關係?Java中的迭代器

// the interface definition 
Interface Iterator { 
    boolean hasNext(); 
    Object next(); // note "one-way" traffic 
    void remove(); 
} 

// an example 
public static void main (String[] args){ 
    ArrayList cars = new ArrayList(); 

    for (int i = 0; i < 12; i++) 
     cars.add (new Car()); 

    Iterator it = cats.iterator(); 

    while (it.hasNext()) 
     System.out.println ((Car)it.next()); 
} 

接口迭代器是否只有預定義的這些方法名或其用戶定義? 以下四條線實際上說明了什麼?

cars.add (new Car()); 
Iterator it = cats.iterator(); 
while (it.hasNext()) 
    System.out.println ((Car)it.next()); 

謝謝。我正在閱讀一本藏書。

回答

5

正如其名稱所述,Java集合是事物的集合。如果你不知道那個字,請在字典中查找。

有許多類型的集合。以一個集合的數學概念爲例。你可以將任意東西放在一個集合中,但它永遠不會包含同一個東西。在集合中的東西沒有排序,那就是你不能說 A來之前B。另一種類型的收集是一個列表。列表可以多次包含相同的事物,列表中的事物的順序很重要。

所有這些集合的共同之處在於它們包含的東西在Java中稱爲元素。當你想知道哪些東西在某個集合中時,你迭代了集合,這只是經過所有元素的另一個術語。這是Iterator所做的。它基本上從集合開始時開始,您總是可以詢問是否存在下一個元素(hasNext()),如果存在,則可以訪問該元素(next()),直到您迭代了集合中的所有元素。

+0

我不會看字典,而是建議看看_Design Patterns_ by Gamma et al。 – VoiceOfUnreason 2010-06-04 16:40:59

1

技術上迭代器和集合不直接相關。然而,迭代器通常與集合一起使用,以交換集合中包含的對象。

迭代器是一個通用而靈活的概念,允許在不依賴迭代實體的確切實現的情況下對對象進行迭代。

1

迭代器最常用作通過集合元素的機制。

儘管您展示的是特定的接口定義,但該概念並非特定於Java。

查看Wikipedia article on Iterator瞭解它的含義以及它是如何在包括Java的各種語言中完成的。

在Java中,它是一個接口,這樣你的確可以實現自己的,但理智的人都對Java的集合庫和任何Java Collection實現方法

collection.iterator() 

集合應返回一個定義迭代器將遍歷該集合的元素。

另請參閱javadoc的CollectionIterator瞭解更多信息。