集合跟陣列的區別

  在學習計算機語言Java中會遇到許多問題,例如,下面是小編為你整理的,供大家閱覽!

  陣列Array和集合的區別:

  ***1***陣列是大小固定的,並且同一個陣列只能存放型別一樣的資料***基本型別/引用型別***

  ***2***JAVA集合可以儲存和運算元目不固定的一組資料。 ***3***若程式時不知道究竟需要多少物件,需要在空間不足時自動擴增容量,則需要使用容器類庫,array不適用。

  聯絡:使用相應的toArray******和Arrays.asList******方法可以回想轉換。

  集合的體系結構:

  List、Set、Map是這個集合體系中最主要的三個介面。 List和Set繼承自Collection介面。 Map也屬於集合系統,但和Collection介面不同。

  Set不允許元素重複。HashSet和TreeSet是兩個主要的實現類。Set 只能通過遊標來取值,並且值是不能重複的。

  List有序且允許元素重複。ArrayList、LinkedList和Vector是三個主要的實現類。 ArrayList 是執行緒不安全的, Vector 是執行緒安全的,這兩個類底層都是由陣列實現的 LinkedList 是執行緒不安全的,底層是由連結串列實現的

  Map 是鍵值對集合。其中key列就是一個集合,key不能重複,但是value可以重複。 HashMap、TreeMap和Hashtable是Map的三個主要的實現類。 HashTable 是執行緒安全的,不能儲存 null 值 HashMap 不是執行緒安全的,可以儲存 null 值

  List和ArrayList的區別

  1.List是介面,List特性就是有序,會確保以一定的順序儲存元素.

  ArrayList是它的實現類,是一個用陣列實現的List.

  Map是介面,Map特性就是根據一個物件查詢物件.

  HashMap是它的實現類,HashMap用hash表實現的Map,就是利用物件的hashcode***hashcode******是Object的方法***進行快速雜湊查詢.***關於雜湊查詢,可以參看<<資料結構>>***

  2.一般情況下,如果沒有必要,推薦程式碼只同List,Map介面打交道.

  比如:List list = new ArrayList******;

  這樣做的原因是list就相當於是一個泛型的實現,如果想改變list的型別,只需要:

  List list = new LinkedList******;//LinkedList也是List的實現類,也是ArrayList的兄弟類

  這樣,就不需要修改其它程式碼,這就是介面程式設計的優雅之處.

  另外的例子就是,在類的方法中,如下宣告:

  private void doMyAction***List list***{}

  這樣這個方法能處理所有實現了List介面的類,一定程度上實現了泛型函式.

  3.如果開發的時候覺得ArrayList,HashMap的效能不能滿足你的需要,可以通過實現List,Map***或者Collection***來定製你的自定義類.