Java 集合框架總述

 
集合框架
集合也就是用於儲存數據的容器。主要用於"替代"對象個數不肯定的數組。
集合用於存儲對象,集合區別於數組,緣由是集合長度可變。
集合容器有多種,由於容器自身特色不一樣,內部數據結構不一樣,造成了容器的體系。
1,集合框架體系:

如圖:
  Java集合主要分爲:Collection,map接口。
  Collection是最基本的集合接口,一個Collection表明一組Object,即Collection的元素(Elements)。
  Map沒有繼承Collection接口,Map提供key到value的映射。一個Map中不能包含相同的key,每一個key只能映射一個value。
2,數組和集合的區別

   數組既能夠存儲基本數據類型,又能夠存儲引用數據類型,基本數據類型存儲的是值,引用數據類型存儲的是地址值
   集合只能存儲引用數據類型(對象)集合中也能夠存儲基本數據類型,可是在存儲的時候會自動裝箱變成對象
   數組長度是固定的,不能自動增加。
   集合的長度的是可變的,能夠根據元素的增長而增加。算法

3,接口與他的子接口們數組

Collection接口有List和Set兩個子接口。數據結構

 

    |-- List:有序(元素存入集合的順序和取出的順序一致),元素都有索引。元素能夠重複。框架

 

    |-- Set:無序(存入和取出順序有可能不一致),不能夠存儲重複元素。必須保證元素惟一性。測試

 

List(常見的):spa

  LinkList類線程

    實現了List接口,線程不一樣步,容許爲null的元素。對象

    LinkedList提供額外的get,remove,insert方法在LinkedList的首部或尾部。這些操做使LinkedList可被用做堆棧(stack),隊列(queue)或雙向隊列(deque)。blog

  ArrayList類繼承

    ArrayList實現了可變大小的數組,線程不一樣步。它容許全部元素,包括null。

    隨着不斷添加新元素可自動增長,可是增加算法沒有定義。須要插入大量元素時,在插入前能夠調用ensureCapacity方法增長ArrayList的容量以提升插入效率。

  Vector類

    Vector很是相似ArrayList,可是Vector是線程同步的。

  Stack類

    Stack繼承自Vector,實現一個後進先出的堆棧。Stack提供5個額外的方法使得Vector得以被看成堆棧使用。

    基本的push和pop方法,還有peek方法獲得棧頂的元素,empty方法測試堆棧是否爲空,search方法檢測一個元素在堆棧中的位置。Stack剛建立後是空棧。

Set(常見的):

  set是一種不包含重複的元素的Collection,即任意的兩個元素e1和e2都有e1.equals(e2)=false,Set最多有一個null元素。

Map(常見的):

  HashTable:

    Hashtable繼承Map接口,是線程同步的,實現一個key-value映射的哈希表。任何非空(non-null)的對象均可做爲key或者value。

    注:若是相同的對象有不一樣的hashCode,對哈希表的操做會出現意想不到的結果(期待的get方法返回null),要避免這種問題:要同時複寫equals方法和hashCode方法,而不要只寫其中一個。

    HashMap:

    HashMap和Hashtable相似,不一樣之處在於HashMap是非同步的,而且容許null,即null value和null key。,

HashSet:

相關文章
相關標籤/搜索