一、數組和集合的區別:
數組是大小固定的,並且同一個數組只能存放類型一樣的數據(基本類型/引用類型);
集合可以存儲和操作數目不固定的一組數據。 所有的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和set,ArrayList覺得優於LinkedList,因為LinkedList要移動指針。
(3). 對於新增和刪除操作add和remove,LinedList比較占優勢,因為ArrayList要移動數據。
3.HashTable和HashMap的區別?
(1). HashTable:繼承自Dictionary類,不接受為null的鍵值(key)和值(value),線程安全
(2). HashMap:繼承自AbstractMap類,可接受為null的鍵值(key)和值(value),線程不安全
