Java集合框架複習之Collection接口,iterator接口,iterable接口(二)


1.Collection<E>接口中處理集合元素的方法

boolean add(E e)

boolean addAll(Collection<? extends E>) 

void clear()

boolean contains(Object o) 如果該集合包含元素o返回true

boolean containsAll(Collection<?> c)  如果該集合包含c集合的所有元素則返回true

boolean equals(Object o) 
    比較此 collection 與指定對象是否相等。 
int hashCode() 
          返回此 collection 的哈希碼值。 
boolean isEmpty() 
          如果此 collection 不包含元素,則返回 true。 
Iterator<E> iterator() 
          返回在此 collection 的元素上進行迭代的迭代器。 
boolean remove(Object o) 
          從此 collection 中移除指定元素的單個實例,如果存在的話(可選操作)。  

boolean removeAll(Collection<?> c) 移除此 collection 中那些也包含在指定 collection 中的所有元素(可選操作)。 

boolean retainAll(Collection<?> c) 
          僅保留此 collection 中那些也包含在指定 collection 的元素(可選操作)。 
int size() 
          返回此 collection 中的元素數。 
Object[] toArray() 
          返回包含此 collection 中所有元素的數組。 
<T> T[]  toArray(T[] a) 
          返回包含此 collection 中所有元素的數組;返回數組的運行時類型與指定數組的運行時類型相同。 

此接口中包含的“破壞性”方法,是指可修改其所操作的 collection 的那些方法,如果此 collection 不支持該操作,則指定這些方法拋出 UnsupportedOperationException(這個異常屬於RuntimeException)。如果是這樣,那麼在調用對該 collection 無效時,這些方法可能,但並不一定拋出 UnsupportedOperationException。例如,如果要添加的 collection 爲空且不可修改,則對該 collection 調用addAll(collection)方法時,可能但並不一定拋出異常。 

按照開發文檔上說的,當一個方法在子類中沒有意義時,我們可以

public void methodName(){
throw new UnsupportedOperationException("method not supported")

}


2.關於迭代器接口Iterator<E> 

對 collection 進行迭代的迭代器。迭代器取代了 Java Collections Framework 中的 Enumeration。迭代器與枚舉有兩點不同:

  • 迭代器允許調用者利用定義良好的語義在迭代期間從迭代器所指向的 collection 移除元素。
  • 方法名稱得到了改進。
Enumeration有兩個方法:hasMoreElements 和 nextElement 判斷是否還有更多的元素和返回下一個元素
Iterator 有三個方法,hasNext,next,remove,前兩個和Enumeration對應


它們的好處都是爲集合的遍歷工作提供統一的接口,即便你更換了集合類的具體實現,你也不需要更換迭代的代碼。
 boolean hasNext()
          如果仍有元素可以迭代,則返回 true。(換句話說,如果 next 返回了元素而不是拋出異常,則返回 true)。 
 E next()
          返回迭代的下一個元素。  當沒有元素迭代時,拋出異常NoSuchElementException 
 void remove()
          從迭代器指向的 collection 中移除迭代器返回的最後一個元素(可選操作)。每次調用 next 只能調用一次此方法。如果進行迭代時用調用此方法之外的其他方式修改了該迭代器所指向的 collection,則迭代器的行爲是不確定的。 
UnsupportedOperationException - 如果迭代器不支持 remove 操作。 IllegalStateException - 如果尚未調用 next 方法,或者在上一次調用 next 方法之後已經調用了 remove 方法

3.Iterable接口

開發文檔給的定義

public interface Iterable<T>
實現這個接口允許對象成爲 "foreach" 語句的目標。 


它只有一個方法,返回一個迭代器

Iterator<T> iterator()
          返回一個在一組 T 類型的元素上進行迭代的迭代器。

關於for-each循環與迭代器的對比,看http://blog.csdn.net/wanghuan203/article/details/7279742

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章