1. 程式人生 > >Java集合:List、Set和Map的區別,ArrayList和LinkedList有何區別..........

Java集合:List、Set和Map的區別,ArrayList和LinkedList有何區別..........

一、陣列和集合的區別:

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

  集合可以儲存和操作數目不固定的一組資料。 所有的JAVA集合都位於 java.util包中! JAVA集合只能存放引用型別的的資料,不能存放基本資料型別。

  陣列和集合相比唯一的有點就是速度快。

二、Java集合分類:

  1.Collection(介面):派生的兩個子介面:List和Set

    List(列表):有序可重複元素,可以插入多個null元素。實現List介面的常用有LinkedList,ArrayList,Vector和Stack。

 

    Set(集):
序、不可重複元素,最多有一個null元素。

  2.Map(對映):不是collection的子介面或者實現類,Map是一個介面。Map 介面最流行的幾個實現類是 HashMap、LinkedHashMap、Hashtable 和 TreeMap

三、幾個重要區別

  1. List、Set和Map的區別

     List:有序、可重複元素,可以插入多個null元素。

     Set:無序、不可重複元素,最多有一個null元素。

     Map:集合中的每一個元素包含一對鍵物件和值物件,集合中沒有重複的鍵物件值物件可以重複。它的有些實現類能對集合中的鍵物件進行排序。

  2.ArrayList和LinkedList的區別?  

      (1). ArrayList是實現了基於動態陣列的資料結構,LinkedList基於連結串列的資料結構。   

    (2). 對於隨機訪問get和setArrayList覺得優於LinkedList,因為LinkedList要移動指標。   

    (3). 對於新增和刪除操作add和remove,LinedList比較佔優勢,因為ArrayList要移動資料。 

   3.HashTable和HashMap的區別?

    (1). HashTable:繼承自Dictionary類,不接受
為null的鍵值(key)和值(value),執行緒安全
  

    (2). HashMap:繼承自AbstractMap類,可接受為null的鍵值(key)和值(value),執行緒不安全