★存儲對象:數組、集合
對象多了用集合存,數據多了用對象存
★數組和集合的不同?
數組長度是固定的,集合長度是可變的
數組中只能存儲同一類型的對象,而集合中存儲的只要是對象就行
★集合框架:是不斷向上抽取共性出來的
Collection框架中包含了大量集合接口以及這些接口的實現類和操作它們的算法(比如排序、迭代、查找等等),collection主要提供了List(列表)、Queue(隊列)、Set(集合)、Stack(棧)和Map(映射表,用於存放鍵值對)等數據結構,其中List、Queue、Set、Stack都繼承自collection接口。
爲什麼會出現這麼多容器呢?
因爲每一個容器對數據的存儲方式都有不同,這個存儲方式稱之爲:數據結構。每個容器因爲數據結構的不同做了單獨的劃分,因爲它們的結構特點不一樣。
Collection位於整個集合框架的頂端,是整個集合框架的基礎,它裏面存儲一組對象表示不同類型的Collections,它的作用只是提供維護一組對象的基本接口。
Collection中最常用的三個接口是List、Set、Map。
List(ArrayList、LinkesList、Vector)
List又稱爲有序的Collection,它按照對象的進入順序保存對象,所以它能對列表中每個元素的位置進行精準的判斷,方便了插入刪除等操作對元素位置判斷的控制,同時它也可以保存重複的對象。
Set(HashSet、TreeSet)
Set表示集合,最主要的特點是集合中的元素不能重複,所以存入Set的每個元素都必須定義equals()方法來確保對象的唯一性。
TreeSet實現了SortedSet接口,因此TreeSet容器中元素是有序的。
Map(HashMap、TreeMap、LinkedHashMap、WeakHashMap、IdentityHashMap)
Map提供了一個從鍵映射到值的數據結構,用來保存鍵值對,其內的值是可以重複的,但是鍵必須是唯一的(和映射的概念相同,可以一對多但不能多對一)。
雖然以上列舉的類都可以實現Map接口,但是它們的執行效率不同
HashMap是基於散列表來實現的,採用對象的HashCode可以實現快速查詢;
LinkHashMap採用列表來維護內部的順序;
TreeMap是基於紅黑樹的數據結構來實現的,內部元素是按序排列的。
Map是一個接口,所以不能直接實例化Map對象,但是可以實例化實現Map接口的類的對象,如:Map hera = new HashMap();
Collection框架類圖
圖片鏈接:http://www.2cto.com/uploadfile/2012/0921/20120921030244923.png