集合:又被稱為容器,用來存儲數據,他是一個對象,能夠將具有相同性質的多個元素匯聚成一個整體,集合被用於存儲,獲取,操縱和傳輸聚合的數據。 這種數據結構稱為集合 Collenction:他是集合的根介面,定義了所有集合的相關功能方法。 數組和集合的區別: 數組 集合 存數據 存數據 存同一種數據類型的 ...
-
集合:又被稱為容器,用來存儲數據,他是一個對象,能夠將具有相同性質的多個元素匯聚成一個整體,集合被用於存儲,獲取,操縱和傳輸聚合的數據。
-
這種數據結構稱為集合 Collenction:他是集合的根介面,定義了所有集合的相關功能方法。
-
數組和集合的區別:
-
數組
集合
存數據
存數據
存同一種數據類型的數據
存任意數據類型
數組中沒有方法
集合中提供了很多方法供我們操作
存儲基本數據類型和引用數據類型String
存儲引用數據類型(對象)
-
-
ArrayList:是介面List的常用實現類,ArrayList的底層是以數組實現的,且數組容量可變(初始容量是10,存多於10個就要擴容,底層就要創建新的數組),ArrayList可以存儲null值。
-
ArrayList是不同步的,即不保證線程安全的。
-
擴容機制是按照1.5倍進行擴容的,選擇初始容量的時候要進行斟酌。
-
ArrayList與List方法與Collention中的方法完全一致!存儲都是有序的,且可以有重覆
-
LinkedList:
-
底層使用鏈表實現,方法與ArrayList相同,允許存儲null值,
-
LinkedList是不保證線程安全的。
-
Collention介面中的方法,ArrayList中的方法,LinkedList都可以使用。
-
ArrayList 和LinkedList的優缺點:
ArrayList
LinkedList
底層以數組實現所以通過下標取值、賦值效率高,在記憶體上的地址是連續的
底層是鏈表結構實現的,所以通過下標取值賦值效率低。在記憶體上是不聯繫的
添加刪除元素效率低
添加刪除元素效率高
-
LinkedList因為以鏈表實現的集合,操作開頭和結尾方便,所以其提供了除List之外的常見方法外,還提供了專門操作開頭和結尾元素的方法,例如 addFirst()和addLast()等方法。
-
Set:
-
Set是Collention的子介面
-
Set集合不包含重覆元素
-
Set介面中的方法與Collention中的方法一模一樣,set中的元素不允許有重覆的值。添加成功返回true,不成功返回false。
HashSet
-
類 是Set 的實現類,不允許有重覆元素,不保證迭代順序(也就是無序的,也就是輸出的結果跟插入的順序不一致。),不保證線程安全。所以HashSet的方法與Collention方法一致,允許null值。
HashCode:利用HashSet存儲自動以對象,使去除重覆,就是想要保證自定義對象去重
→ 在自定義類中重寫equals和HashCode方法即可,當HashCode相同的時候才會去執行equals,如果HashCode直接不同了,那麼equals將不用再執行了。
-
-
TreeSet:
-
TreeSet是Set的常見的子實現類,只要是Set的子類都不能存儲相同元素)(也就是不允許元素重覆),並且Set下的實現類都不能通過下標操作
-
TreeSet是對元素進行自然順序(預設升序)排序,或者根據創建set的時候提供Comparator進行排序。
-
TreeSet是不保證線程安全的。
-
基於TreeMap實現,使用元素的自然順序對元素進行排序。且樹是沒有容量的。
-
從寫自定義對象時,該對象的類需要實現Comparable介面,重寫其ComparTo方法。
-
例如存儲學生對象,按年齡排序。
-
-
重寫ComparTo方法 ,return返回0只存第一個,返回負數和正數都能夠排序,具體效果經過嘗試。
LinkedHashSet:linked 和 Hashset的結合體,能保證數據不重覆並且有序(按照輸入順序排序),
-
-