集合的復習
阿新 • • 發佈:2019-04-15
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方法。
集合的復習