1. 程式人生 > >集合的復習

集合的復習

treeset inf 實現 增刪 相對 重復 定義 分享圖片 叠代

先來放一張集合體系的框架圖:

技術分享圖片

其中Iterator 是集合專用的叠代器:

叠代器:用來遍歷容器中的元素的工具。

Collection是所有單列集合的超類(接口);

單列集合:就是集合中一個空間存儲一個元素。

我們常用Collection的子類為Set 和List。

List集合我們常用ArrayList子類和LinkedList子類來創建對象。

那麽ArrayList和LinkedList的主要區別呢?

ArrayList的底層是數組,而LinkedList的底層是鏈表。

數組有索引,相對來說查詢速度快一點,但是數組的連續結構,使得數組的增刪速度沒有鏈表快,所以ArrayList集合主要用於數據的查詢,LinkedList主要用於數據的增刪。

Set集合我們常用HashSet子類和TreeSet子類來創建對象。

那麽List集合和Set集合的主要區別是什麽呢?

就是List集合裏存儲規則是有序可重復的

而Set集合的存儲規則是無序不重復。

簡單描述一下:

有序是指:插入與存儲順序相同

而無序是指:集合會實現Comparable接口來對插入的元素進行排序,插入順序與存儲順序不相同。

可重復:是指集合中存儲的元素可以重復

不可重復:集合中存儲的元素不可重復,那麽不可重復它的實現原理呢?

Set集合 從存儲元素,先根據哈希值判斷該位置有無元素,在調用equals方法來判斷是否重復,從而決定是否插入元素。對於基本類型的數據,是底層已經重寫了hashCode方法和equals方法 ,而對於我們自定義的對象,就需要我們自己重寫hashCode方法和equals方法。

集合的復習