用Iterator實現遍歷集合

使用Collection類的Iterator,能夠方便的遍歷Vector, ArrayList, LinkedList等集合元素,避免經過get()方法遍歷時,針對每一種對象單獨進行編碼。html

示例:java

[java] view plain copy
  1. Collection coll = new Vector(); //LinkedList(); //ArrayList();  
  2. coll.add("Tody");  
  3. coll.add("is");  
  4. coll.add("Sunday.");  
  5.   
  6. // Output all elements by iterator  
  7. Iterator it = coll.iterator();  
  8. while(it.hasNext()) {  
  9.     System.out.print(it.next() + " ");  
  10. }  

輸出:數組

Tody is Sunday. 函數

 

1.hasNext()函數的API解釋編碼

boolean java.util.Iterator.hasNext()

 

hasNext

boolean hasNext()
Returns true if the iteration has more elements. (In other words, returns true if next() would return an element rather than throwing an exception.)

 

Returns:
true if the iteration has more elements

---------------------------------------------------------spa

2.next()函數的API解釋.net

Object java.util.Iterator.next()

 

next

E next()
Returns the next element in the iteration.

 

Returns:
the next element in the iteration
Throws:
NoSuchElementException - if the iteration has no more elements

 

[java] view plain copy
  1. Collection coll = new HashSet();  
  2. coll.add("Tody");  
  3. coll.add("is");  
  4. coll.add("Sunday.");  
  5.   
  6. // Output all elements by iterator  
  7. Iterator it = coll.iterator();  
  8. while(it.hasNext()) {  
  9.     System.out.print(it.next() + " ");  
  10. }  

輸出:3d

is Sunday. Tody code

 

由上面兩個例子看出,在List和Set對象中,Iterator的next()方法返回的值是不同的。htm

緣由是List屬於線性集合,元素是有序的,讀取時是按照數組的形式,一個接一個的讀取,存儲也是按照add的順序添加的。

而Set屬於非線性的,是無序的,因此讀取的元素與添加的順序不必定一致。

對於HashSet,其實它返回的順序是按Hashcode的順序。

若是迭代也有序,則能夠用LinkedHashSet。

http://topic.csdn.net/u/20101227/09/63a23d05-7f15-4b0e-9287-e97f96ba4349.html?77188351

相關文章
相關標籤/搜索