jdk1.6的集合源碼閱讀之Collection接口

        咱們知道java容器類類庫的用途是「保存對象」,容器最頂層分爲兩個Collection和Map,其他的都是繼承這連個接口,Collection存儲一個獨立元素的序列,下面有List 、Set、Queue,而Map主要存儲 「鍵值對」對象,下面實現版本有hashMap和TreeSet。(而List、Set、Queue下面基本各有兩三個實現版本。)java

        既然咱們要閱讀容器類的jdk源碼,固然得從Collection開始,他是大部分容器類的父接口,裏面只有函數聲明,聲明瞭一組Collection類型容器的操做方法,可是沒有實現,等其子類去實現。其代碼以下(基於jdk1.6):數組

 

 

package java.util;



public interface Collection<E> extends Iterable<E> {
    
    //返回容器中元素的個數 
    int size();

    //若是集合元素爲空,返回true,不然false
    boolean isEmpty();
  
	//若是集合包含這個元素,返回true,不然false,若是元素類型和本集合不同,拋出ClassCastException異常,若是元素null,而集合不容許爲null,則拋出NullPointerException     
    boolean contains(Object o);

	//返回集合類的迭代器,能夠用來遍歷容器中的元素     
    Iterator<E> iterator();

 
	//將該集合轉換爲數組     
    Object[] toArray();

    
	//將集合類轉換爲更爲具體類型的數組   
    <T> T[] toArray(T[] a);

   
	//將元素添加到容器,成功返回true   
    boolean add(E e);

  
	//從容器中刪除元素,成功返回true
    boolean remove(Object o);


    //大塊操做

   
	//若是容器包含c容器裏面的全部元素,則返回true     
    boolean containsAll(Collection<?> c);

    
	//添加一個集合他容器中
    boolean addAll(Collection<? extends E> c);

    
	//刪除集合中所包含的c集合裏面的元素,相似求交集  
    
    boolean removeAll(Collection<?> c);

   
	//容器中只留下和c集合裏面相同的元素,c集合的內容不變,變的是本身    
    boolean retainAll(Collection<?> c);

 
	//移除容器中全部的元素  
    void clear();


    // Comparison and hashing

    
	//指定的對象與本集合進行比較,判斷相等性    
    boolean equals(Object o);

    
	//返回這個集合的hash code
    int hashCode();
}

 

能夠看的出Collection繼承了Iterable接口,而Iterable接口的內容以下:函數

取迭代器接口類code

public interface Iterable<T> {

    /**
     * 返回一個在類型T的元素集合上的迭代器。
     * 
     * @return an Iterator.
     */
    Iterator<T> iterator();
}

因此之後只要你建立了實現該Iterable的類,就能夠用foreach語句來遍歷了,因此全部的繼承Collection均可以用foreach語句來遍歷了。對象

迭代器接口類繼承

public interface Iterator<E> {
    //判斷是否還有元素  
    boolean hasNext();

    //返回下一個元素
    E next();

    //刪除元素
    void remove();
}
相關文章
相關標籤/搜索