一.什麼是集合 集合是對象的集合,就像數組是數的集合。集合是一種容器,可以存放對象(可以是不同類型的對象)。 二.集合的優點(為什麼要用集合) 當然,在java里,可以使用數組來存放一組類型相同的對象。但是數組存放對象有兩個缺點(集合優點): 三.集合的實現 java中集合主要由兩個介面實現:Col ...
一.什麼是集合
集合是對象的集合,就像數組是數的集合。集合是一種容器,可以存放對象(可以是不同類型的對象)。
二.集合的優點(為什麼要用集合)
當然,在java里,可以使用數組來存放一組類型相同的對象。但是數組存放對象有兩個缺點(集合優點):
- 數組大小是固定的:數組的一旦創建,大小則是固定的。在要存放的對象個數不可知或者超過數組容量的情況下,不適用。
- 數組存放的對象個數不可知:數組的記憶體放了多少個對象不可以得知。
三.集合的實現
java中集合主要由兩個介面實現:Collection和Map,Collection又有兩個子介面:Set和List。
Collection介面
|-------List介面
|-------ArrayList類(主要實現類,類似數組),LinkedList類(類似鏈表),Vector類(線程安全的,不過比較老,不常用)
|-------Set介面(下麵的類實現了Collection介面,基本上沒有添加新方法)
|-------HashSet(主要實現類,利用該類,需要重寫equals()方法和hashCode()方法)
|-------LinkedHashSet(採用鏈表實現的hashset,遍歷的時候按照添加的順序)
|-------TreeSet(只能存放同類型,同時是有序的,此處的有序只按照添加對象的指定順序。例如String按照字元串從小到大順序,用的時候需要實現 java.lang.Comparable介面中的compareTo(Object o)方法,如果修改類不方便或者希望用一個通用的比較方法去比較多種對象,則可以創建一個實 現了Comparator介面的Comparator對象,並重寫compare()方法,再在創建TreeSet介面的對象時構造器調用該對象)
Map介面
|-------HashMap,LinkedHashMap,TreeMap,Hashtable
各個介面的特點:
Set:元素無序,不可重覆。SortedSet是一個按照升序排列元素的Set。
List:元素有序,可重覆。提供了按照索引訪問的方式。可以看作“動態數組”,
Map:具有映射關係“key-value”的鍵值對。一個鍵對應一個值,使用時根據鍵來尋找值,所以鍵不可重覆,值可重覆。
註:這裡對無序、有序的理解:是指元素在內部實現的存儲方式不同,有序例如:數組,指針。無序例如:哈希表。
下圖為Collection介面繼承樹:
下麵好像要分別來講下List,Set,Map介面了,算了,另開一篇再講吧~