一.集合的優點
集合又稱爲動態數組,相對於數組來說,集合是可以動態擴充的;一般定義一個數組要固定其長度,這就很不方便了,數組固定長度太短,不利於存儲數據,太長又浪費空間;
而集合能很好地解決數組這種不足,能夠動態添加存儲空間;
二.集合的分類
集合共分爲Collection和鍵值對的Map
1.Collection接口
Collection接口又包括Set和List接口,換一種說法:Set和List接口都是繼承於Collection接口;
(1).List接口(繼承於Collection接口)及其實現類
List接口及其實現類是容量可變的列表,可按索引訪問集合中的元素。
特點:集合中的元素有序、可重複;
列表在數據結構中分別表現爲:數組和向量、鏈表、堆棧、隊列。
實現類:
ArrayList 實現一個數組,它的規模可變並且能像鏈表一樣被訪問。它提供的功能類似Vector類但不同步,它是以Array方式實現的List,允許快速隨機存取。
LinkedList實現一個鏈表,提供最佳順序存取,適合插入和移除元素。由這個類定義的鏈表也可以像棧或隊列一樣被使用。提供最佳順序存取,適合插入和移除元素。
(2).Set接口(繼承於Collection接口)及其實現類
特點:集合中的元素不按特定方式排序,只是簡單的把對象加入集合中,就像往口袋裏放東西。
對Set中成員的訪問和操作是通過Set中對象的引用進行的,所以集中不能有重複對象。
Set也有多種變體,可以實現排序等功能,如TreeSet,它把對象添加到集中的操作將變爲按照某種比較規則將其插入到有序的對象序列中.它實現的是SortedSet接口,也就是加入了對象比較的方法。通過對集中的對象迭代,我們可以得到一個升序的對象集合。
實現類:
HashSet 能夠快速定位一個元素,要注意的是:存入HashSet中的對象必須實現HashCode()方法;
TreeSet 將放入其中的元素按序存放。
2.映射 Map接口及其實現類
Map是一個單獨的接口,不繼承於Collection。Map是一種把鍵對象和值對象進行關聯的容器。
特點:key不允許重複。
實現類:
HashMap 實現一個鍵到值映射的哈希表,通過鍵取得值對象,沒有順序,通過get(key)來獲取value,允許存儲空對象,而且允許鍵是空(由於鍵必須是唯一的,當然只能有一個);
HashTable 實現一個映象,所有的鍵必須非空。爲了能高效的工作,定義鍵的類必須實現hashcode()方法和equal()方法。這個類是前面java實現的一個繼承,並且通常能在實現映象的其他類中更好的使用。
當元素的順序很重要時選用TreeMap,當元素不必以特定的順序進行存儲時,使用HashMap。Hashtable的使用不被推薦,因爲HashMap提供了所有類似的功能,並且速度更快。當你需要在多線程環境下使用時,HashMap也可以轉換爲同步的。