Collection 的兩個子集Set 和 List

Collection
List列表)
特色:
算法

1,有序(存儲元素的順序和取出元素的順序一致)數組

2,該集合中的元素都有索引,因此能夠經過索引(角標)來訪問元素。 
3,它以存儲重複元素。     數據結構


常見子類對象:記住:具體的子類對象,咱們要學習應該是該對象的特有的數據結構,以及相關的特色。
Vector:jdk1.0就存在了,底層是數組結構的,可變長度數組。原理:一旦原數組長度不夠,會建立新數組將原數組的元素複製到新數組中,並將新元素添加到新數組中。Vector是同步的。
ArrayList:底層是數組結構,也是支持長度可變數組的,是不一樣步的。替代了Vector.由於效率高。 查詢效率很高。 可是增刪的效率很低。學習

LinkedList:底層是連接列表結構,簡稱鏈表結構。是不一樣步的。這個中結構的好處:對元素的增刪很是效很高。 查詢的效率很低。spa

  
Set集)orm

中的方法和Collection一致,只要重點注意它的子類對象便可。取出元素只能使用迭代器。
特色:
1,不可包含重複元素。(最大的特色)
2,這個集合存入元素的順序和取出元素的順序不必定一致。(具體的容器對象數據結構不一樣,順序也有不一樣)對象


HashSet:底層數據結構是哈希表,不保證順序,是不一樣步的。排序

哈希表:提供數組的查詢效率而出現的。索引

將要存儲的元素先經過哈希算法算出一個哈希值來標識存儲的位置,表明着元素。要找元素時,先該元素經過哈希算法算出哈希值,在經過哈希值到哈希表中去查找。接口

特色:
1,不關係元素的順序。
2,提升了查詢效率。
3,不可能出現重複元素,由於哈希值都不一樣。即便相同,會再次判斷兩個元素的equals,內容是否相同。
若是內容也相同,不存,若是內容不一樣,存儲。
因此哈希表要保證元素的惟一性,必需要依賴於兩個方法。
1,hashCode
2,equals    
TreeSet:能夠給Set集合中的元素進行指定順序的排序,非同步的。 默認狀況下,是經過元素的天然順序的序。它保證元素惟一性的依據是看比較方法的返回結果是不是0.是0.就視爲元素相同。不存。
TreeSet排序的方式一:讓元素自身具有比較性,須要實現Comparable接口,覆蓋compareTo方法。
這種比較方式成爲天然順序排序。
若是元素自身不具有比較性或者具有的比較性(天然順序)不是所須要的,這時只能用第二種方式 。
TreeSet排序的方式二:讓容器自身具有比較性。容器一初始化就具有了比較功能。由於容器時在對構造時完成的。經過查閱,有一個構造方法TreeSet(Comparator),在容器初始化時能夠指定一個比較                 器。 須要實現Comparator接口,覆蓋compare方法便可。因此這種方式成爲比較器排序。 

如抉擇:

當存入的的對象有重複時,用List,沒有重複元素時,用Set。

相關文章
相關標籤/搜索