Java 集合(一)框架概述與Collection

  在使用Java語言開發時,繞不開對集合的使用,因此,對集合的掌握是非常有必要的。除此之外,Java的集合框架設計也能看出一些數據結構的設計思想,對開發的進階是很有幫忙的。本系列文章以JDK1.6爲例,介紹下集合框架。

一、集合框架概述

  談Java集合框架,基本上繞不開一張圖,如下:

  從上圖可以看出,Java 集合框架主要包括兩種類型的容器,一種是集合(Collection),存儲一個元素集合,另一種是圖(Map),存儲鍵/值對映射。Collection 接口又有 3 種子類型,List、Set 和 Queue,再下面是一些抽象類,最後是具體實現類,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等。
  

1.1 Collection繼承關係

  用非圖表的形式表示Collection主要類之間的關係的話,如下(└代表繼承關係):
   |–Collection
   |----└ List
   |--------└ AbstractList
   |----------------└ AbstractSequentialList
   |------------------------------└ LinkedList
   |----------------└ ArrayList
   |----------------└ Vector
   |--------------------└ Stack
   |----└ Set
   |--------└ AbstractSet
   |---------------└ HashSet
   |--------------------└ LinkedHashSet
   |---------------└ TreeSet

1.2 Map繼承關係

  用非圖表的形式表示Map主要類之間的關係的話,如下(└代表繼承關係):
   |–Map
   |----└ AbstractMap
   |------------└ HashMap
   |-------------------└ LinkedHashMap
   |------------└ TreeMap
   |------------└ Hashtable
  1.1和1.2中列出的類或接口只是最常用的一些,用來描述他們之間的繼承關係。

二、Collection相關

  Collection相關的類,關注Collection.java和AbstractCollection.java即可。

2.1 Collection

  Collection是集合框架的根接口(interface),定義了不同集合具體實現類都要實現的通用性方法。

2.1.1 Collection接口彙總

方法 作用
public boolean add(E object) 添加元素
public boolean addAll(Collection<? extends E> collection) 添加另一個集合的元素
public void clear() 清空集合
public boolean contains(Object object) 判斷是否包含某個元素
public boolean containsAll(Collection<?> collection) 判斷是否包含某個集合中的所有元素
public boolean equals(Object object) 比較兩個元素是否相等
public int hashCode() 哈希值
public boolean isEmpty() 判斷集合是否爲空
public Iterator iterator() 返回集合迭代器
public boolean remove(Object object) 清除某個元素
public boolean removeAll(Collection<?> collection) 清除某個集合中的所有元素
public boolean retainAll(Collection<?> collection) 判斷兩個集合是否存在並集
public int size() 返回集合中的元素個數
public Object[ ] toArray() 將集合轉化爲數組
public T[ ] toArray(T[] array) 將集合轉化爲數組

2.1.2 Collection接口詳述

   1、public boolean add(E object)
    添加指定的元素。如果此 collection 由於調用而發生更改,則返回 true;如果此 collection 不允許有重複元素,並且已經包含了指定的元素,則返回 false。
    如果 collection 由於某些原因(已經包含該元素的原因除外)拒絕添加特定的元素,那麼它必須 拋出一個異常。
    參數:
      object - 確定此 collection 中是否存在的元素。
    返回:
      如果此 collection 由於調用而發生更改,則返回 true。
    拋出:
      UnsupportedOperationException - 如果此 collection 不支持 add 操作。
      ClassCastException - 如果指定元素的類不允許它添加到此 collection 中。
      NullPointerException - 如果指定的元素爲 null,並且此 collection 不允許 null 元素。
      IllegalArgumentException - 如果元素的某屬性不允許它添加到此 collection 中。
      IllegalStateException - 如果由於插入限制,元素不能在此時間添加。
   2、public boolean addAll(Collection<? extends E> collection)
    將指定 collection 中的所有元素都添加到此 collection 中。
    參數:
      collection - 包含要添加到此 collection 的元素的 collection。
    返回:
      如果此 collection 由於調用而發生更改,則返回 true。
    拋出:
      UnsupportedOperationException - 如果此 collection 不支持 addAll 方法。
      ClassCastException - 如果指定 collection 中某個元素的類不允許它添加到此collection中。
      NullPointerException - 如果指定 collection 包含 null 元素,並且此 collection 不支持 null。 元素,或者指定的 collection 爲 null 。
      IllegalArgumentException - 如果指定 collection 的元素的某屬性不允許它添加到此 collection 中。
      IllegalStateException - 如果由於插入限制,不是所有的元素都能在此時間添加。
   3、public void clear()
    移除此 collection 中的所有元素。
    拋出:
      UnsupportedOperationException - 如果此 collection 不支持 clear 操作。
   4、public boolean contains(Object object)
    如果此 collection 包含指定的元素,則返回 true。更確切地講,當且僅當此 collection 至少包含一個滿足的元素object 時,返回 true。
    參數:
      object - 測試在此 collection 中是否存在的元素。
    返回:
      如果此 collection 包含指定的元素,則返回 true。
    拋出:
      ClassCastException - 如果指定元素的類型與此 collection 不兼容。
      NullPointerException - 如果指定的元素爲 null,並且此 collection 不允許 null 元素。
   5、public boolean containsAll(Collection<?> collection)
    如果此 collection 包含指定 collection 中的所有元素,則返回 true。
    參數:
      collection - 將檢查是否包含在此 collection 中的 collection 。
    返回:
      如果此 collection 包含指定 collection 中的所有元素,則返回 true。
    拋出:
ClassCastException - 如果指定 collection 中有一個或多個元素的類型與此 collection 不兼容。
      NullPointerException - 如果指定 collection 包含一個或多個 null 元素,並且此 collection 不允許 null 元素,或者指定的 collection 爲 null。
   6、public boolean equals(Object object)
    比較兩個對象是否相等。
    覆蓋:
      Object類中的 equals。
    參數:
      object - 要與此 collection 進行相等性比較的對象。
    返回:
      如果指定對象與此 collection 相等,則返回 true。
   7、public int hashCode()
    返回此 collection 的哈希碼值。當 Collection 接口沒有爲 Object.hashCode 方法的常規協定添加任何約束時,爲了滿足 Object.hashCode 方法的常規協定,開發人員應該注意任何重寫 Object.equals 方法的類必須重寫 Object.hashCode 方法。需要特別指出的是,c1.equals(c2) 暗示着 c1.hashCode() == c2.hashCode()。
    覆蓋:
      Object類中的 hashCode。
    返回:
      此 collection 的哈希碼值。
   8、public boolean isEmpty()
    判斷collection是否包含元素。
    返回:
      如果此 collection 不包含元素,則返回 true。
   9、public Iterator iterator()
    返回在此 collection 的元素上進行迭代的迭代器。關於元素返回的順序沒有任何保證(除非此 collection 是個能提供保證順序的類實例)。
    指定者:
      接口 Iterable 中的 iterator。
    返回:
      在此 collection 的元素上進行迭代的 Iterator。
   10、public boolean remove(Object object)
    從此 collection 中移除指定元素的單個實例。更確切地講,如果此 collection 包含一個或多個滿足 (o==null ? e == null : o.equals(e)) 的元素object,則移除這樣的元素,返回 true 。
    參數:
      object - 要從此 collection 中移除的元素(如果存在)。
    返回:
      如果此調用將移除一個元素,則返回 true。
    拋出:
      ClassCastException - 如果指定元素的類型與此 collection 不兼容。
      NullPointerException - 如果指定的元素爲 null,並且此 collection 不允許 null 元素。
      UnsupportedOperationException - 如果此 collection 不支持 remove 操作。
   11、public boolean removeAll(Collection<?> collection)
    移除此 collection 中那些也包含在指定 collection 中的所有元素。
    參數:
      collection - 辦好要從此 collection 移除的元素的 collection。
    返回:
      如果此 collection 由於調用而發生更改,則返回 true。
    拋出:
      UnsupportedOperationException - 如果此 collection 不支持 removeAll 方法。
      ClassCastException - 如果此 collection 中一個或多個元素的類型與指定 collection 不兼容。
      NullPointerException - 如果此 collection 包含一個或多個 null 元素,並且指定的 collection 不支持 null 元素,或者指定的 collection 爲 null。
   12、public boolean retainAll(Collection<?> collection)
    僅保留此 collection 中那些也包含在指定 collection 的元素,可理解爲求並集。
    參數:
      collection - 包含保留在此 collection 中的元素的 collection 。
    返回:
      如果此 collection 由於調用而發生更改,則返回 true 。
    拋出:
      UnsupportedOperationException - 如果此 collection 不支持 retainAll 操作 。
      ClassCastException - 如果此 collection 中一個或多個元素的類型與指定 collection 不兼容。
      NullPointerException - 如果此 collection 包含一個或多個 null 元素,並且指定的 collection 不允許 null 元素(可選),或者指定的 collection 爲 null。
   13、public int size()
    返回此 collection 中的元素數。如果此 collection 包含的元素大於 Integer.MAX_VALUE,則返回 Integer.MAX_VALUE。
    返回:
      此 collection 中的元素數。
   14、public Object[ ] toArray()
   返回包含此 collection 中所有元素的數組。
    返回:
      包含此 collection 中所有元素的數組。
   15、public T[ ] toArray(T[] array)
    返回包含此 collection 中所有元素的數組;返回數組的運行時類型與指定數組的運行時類型相同。如果指定的數組能容納該 collection,則返回包含此 collection 元素的數組。否則,將分配一個具有指定數組的運行時類型和此 collection 大小的新數組。
    參數:
      array - 存儲此 collection 元素的數組(如果其足夠大);否則,將爲此分配一個具有相同運行時類型的新數組。
    返回:
      包含此 collection 中所有元素的數組
    拋出:
      ArrayStoreException - 如果指定數組的運行時類型不是此 collection 每個元素運行時類型的超類型 。
      NullPointerException - 如果指定的數組爲 null。

2.2 AbstractCollection

2.2.1 AbstractCollection接口彙總

方法 作用
public boolean add(E object) 添加元素
public boolean addAll(Collection<? extends E> collection) 添加一個集合中的全部元素
public void clear() 清空集合
public boolean contains(Object object) 判斷是否包含元素
public boolean containsAll(Collection<?> collection) 判斷是否完全包含一個集合中的元素
public boolean isEmpty() 判斷是否爲空
public abstract Iterator iterator() 返回迭代器
public boolean remove(Object object) 清除某個元素
public boolean removeAll(Collection<?> collection) 清除一個集合中的所有元素怒
public boolean retainAll(Collection<?> collection) 判斷是否存在並集
public abstract int size() 返回集合元素個數
public Object[ ] toArray() 將集合轉化爲數組
public T[ ] toArray(T[ ] contents) 將集合轉化爲數組
public String toString() 字符串表示

2.2.2 AbstractCollection接口詳述

  AbstractCollection是個抽象類,實現了Collection接口。此類提供 Collection 接口的骨幹實現,以最大限度地減少了實現Collection接口所需的工作。 具體如下:
   1、public boolean add(E object)
    確保此 collection 包含指定的元素,如果此 collection 由於調用而發生更改,則返回 true。
    指定者:
      接口 Collection 中的 add
    參數:
      object - 確定此 collection 中是否存在的元素。
    返回:
      如果此 collection 由於調用而發生更改,則返回 true 。
    拋出:
      UnsupportedOperationException - 如果此 collection 不支持 add 操作 。
      ClassCastException - 如果指定元素的類不允許它添加到此 collection 中 。
      NullPointerException - 如果指定的元素爲 null,並且此 collection 不允許 null 元素 。
      IllegalArgumentException - 如果元素的某屬性不允許它添加到此 collection 中 。
      IllegalStateException - 如果由於插入限制,元素不能在此時間添加。
   2、public boolean addAll(Collection<? extends E> collection)
    將指定 collection 中的所有元素都添加到此 collection 中。
    指定者:
      接口 Collection 中的 addAll。
    參數:
      collection - 包含要添加到此 collection 的元素的 collection。
    返回:
      如果此 collection 由於調用而發生更改,則返回 true。
    拋出:
      UnsupportedOperationException - 如果此 collection 不支持 addAll 方法。
      ClassCastException - 如果指定 collection 中某個元素的類不允許它添加到此 collection 中 。
      NullPointerException - 如果指定 collection 包含 null 元素,並且此 collection 不支持 null 元素,或者指定的 collection 爲 null 。
      IllegalArgumentException - 如果指定 collection 的元素的某屬性不允許它添加到此 collection 中。
      IllegalStateException - 如果由於插入限制,不是所有的元素都能在此時間添加。
   3、public void clear()
    移除此 collection 中的所有元素。
    指定者:
      接口 Collection 中的 clear。
    拋出:
      UnsupportedOperationException - 如果此 collection 不支持 clear 操作。
   4、public boolean contains(Object object)
    如果此 collection 包含指定的元素,則返回 true。更確切地講,當且僅當此 collection 至少      包含一個滿足 (o==null ? e == null : o.equals(e)) 的元素 e 時,返回 true。
    指定者:
      接口 Collection 中的 contains。
    參數:
      object - 測試在此 collection 中是否存在的元素。
    返回:
      如果此 collection 包含指定的元素,則返回 true。
    拋出:
      ClassCastException - 如果指定元素的類型與此 collection 不兼容。
      NullPointerException - 如果指定的元素爲 null,並且此 collection 不允許 null 元素。
   5、public boolean containsAll(Collection<?> collection)
    如果此 collection 包含指定 collection 中的所有元素,則返回 true。
    指定者:
      接口 Collection 中的 containsAll。
    參數:
      collection - 將檢查是否包含在此 collection 中的 collection 。
    返回:
      如果此 collection 包含指定 collection 中的所有元素,則返回 true 。
    拋出:
      ClassCastException - 如果指定 collection 中有一個或多個元素的類型與此 collection 不兼容。
      NullPointerException - 如果指定 collection 包含一個或多個 null 元素,並且此 collection 不允許 null 元素,或者指定的 collection 爲 null。
   6、public boolean isEmpty()
    判斷集合是否爲空。
    指定者:
      接口 Collection 中的 isEmpty。
    返回:
      如果此 collection 不包含元素,則返回 true。
   7、public abstract Iterator iterator()
    返回一個迭代器,由具體的子類去實現。
    返回:
      在此 collection 中的元素上進行迭代的迭代器。
   8、public boolean remove(Object object)
    從此 collection 中移除指定元素的單個實例,更確切地講,如果此 collection 包含一個或多個滿足 (o == null ? e == null : o.equals(e)) 的元素 e,則移除這樣的元素。
    指定者:
      接口 Collection 中的 remove
    參數:
      object - 要從此 collection 中移除的元素。
    返回:
      如果此調用將移除一個元素,則返回 true 。
    拋出:
      UnsupportedOperationException - 如果此 collection 不支持 remove 操作 。
      ClassCastException - 如果指定元素的類型與此 collection 不兼容。
      NullPointerException - 如果指定的元素爲 null,並且此 collection 不允許 null 元素。
   9、public boolean removeAll(Collection<?> collection)
    移除此 collection 中那些也包含在指定 collection 中的所有元素。
    指定者:
      接口 Collection 中的 removeAll。
    參數:
      collection - 辦好要從此 collection 移除的元素的 collection 。
    返回:
      如果此 collection 由於調用而發生更改,則返回 true 。
    拋出:
      UnsupportedOperationException - 如果此 collection 不支持 removeAll 方法 。
      ClassCastException - 如果此 collection 中一個或多個元素的類型與指定 collection 不兼容。
      NullPointerException - 如果此 collection 包含一個或多個 null 元素,並且指定的 collection 不支持 null 元素,或者指定的 collection 爲 null。
   10、public boolean retainAll(Collection<?> collection)
    有交集則返回true。
    指定者:
      接口 Collection 中的 retainAll。
    參數:
      collection - 包含保留在此 collection 中的元素的 collection。
    返回:
      如果此 collection 由於調用而發生更改,則返回 true。
    拋出:
      UnsupportedOperationException - 如果此 collection 不支持 retainAll 操作 。
      ClassCastException - 如果此 collection 中一個或多個元素的類型與指定 collection 不兼容。
      NullPointerException - 如果此 collection 包含一個或多個 null 元素,並且指定的 collection 不允許 null 元素,或者指定的 collection 爲 null。
   11、public abstract int size()
    返回此 collection 中的元素數。如果此 collection 包含的元素大於 Integer.MAX_VALUE,則返回 Integer.MAX_VALUE。
   12、public Object[ ] toArray()
    返回包含此 collection 中所有元素的數組。
   13、public T[ ] toArray(T[ ] contents)
    返回包含此 collection 中所有元素的數組。
    指定者:
      接口 Collection 中的 toArray。
    參數:
      contents - 存儲此 collection 元素的數組(如果其足夠大);否則,將爲此分配一個具有相同運行時類型的新數組。
    返回:
      包含此 collection 中所有元素的數組 。
    拋出:
      ArrayStoreException - 如果指定數組的運行時類型不是此 collection 每個元素運行時類型的超類型 。
      NullPointerException - 如果指定的數組爲 null。
   14、public String toString()
    返回此 collection 的字符串表示形式。該字符串表示形式由 collection 元素的列表組成,這些元素按其迭代器返回的順序排列,並用方括號 ("[ ]") 括起來。相鄰元素由字符 ", "(逗號加空格)分隔。
    覆蓋:
      Object類中的 toString。
    返回:
      此 collection 的字符串表示形式。

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