java 學習筆記6-集合

集合:保存多個其他對象的對象,不能保存簡單類型

List:有序(存放元素的順序),可重複的集合

ArrayList:實質就是一個會自動增長的數組

查詢效率比較高,增刪的效率比較低,適用於查詢比較頻繁,增刪動作較少的元素管理的集合。

加載大批量的數據時,先進行手動擴容(就是調用ensureCapacity(int minCapacity)方法),這樣可以提高效率。

LinkedList:底層是用雙向循環鏈表來實現的

查詢效率低,但是增刪效率很高,適用於增刪動作的比較頻繁,查詢次數較少的元素管理的集合


Set:無序的,不允許有重複元素的集合

HashSet:

Object類中的hashCode()的方法是所有類都會繼承的方法,這個方法會算出一個Hash碼值返回,HashSet會用Hash碼值去和數組長度取模,對象的模值(這個模值就是對象要存放在數組中的位置,和數組的下標相同)相同時纔會判斷數組中的元素和要加入的對象的內容是否相同,如果不同纔會再找位置添加進去,相同則不允許添加。

如果數組中的元素和要加入的對象的hashCode()返回了相同的Hash碼值,纔會用equals()方法來判斷兩個對象的內容是否相同。

注意:要存入HashSet的集合對象中的自定義類必須覆蓋hashCode()、equals()兩個方法,才能保證集合中元素不重複。

TreeSet:可排序的Set

SortedSet接口是Set的子接口,TreeSet是SortedSet接口的實現類,他可以對集合中的元素進行排序。

將自定義類的對象存放在TreeSet中,這個類需要實現了Comparable接口,TreeSet可以自動過濾掉重複元素所以不在需要重載hashCode()方法,TreeSet會根據比較規則判斷元素內容是否相同,不同則會存入,TreeSet會在元素存入時就進行排序。

Comparable接口:

也叫做可比較接口,這個接口在java.lang包下,只要根據指定類型的排序規則實現了這個接口,就是可排序的。

這個接口中只定義了一個 compareTo(Object o) 方法,該方法的返回值類型是整型,如果當前對象大於參數對象就返回正數,當前對象等於參數對象就返回0,當前對象小於參數對象就返回負值,這樣寫就是升序排列,反之則是進行降序排列。

Comparator接口:

比較器Comparator接口,是另一種對自定義類型對象的集合整體排序的方法,存在於java.util包下。

這個接口中定義了一個 compare(Object o1,Object o2) 方法來比較兩個對象,這個方法的返回值定義和上面介紹的那個方法是一樣。

利用這種方式,則在創建集合的時候把定義好的比較器作爲參數,構造一個集合

Map:存放key-value對(有關係的兩個對象,一個做key,一個做value,同時存入)

HashMap:基於哈希表的 Map 接口的實現,此實現提供所有可選的映射操作,並允許使用 null 值和 null 鍵

遍歷:

先調用keySet()得到key的set集合,

再迭代遍歷key的set集合,

根據key得到value。

Hashtable:同HashMap,一般不使用

HashMap與Hashtable的區別:

HashMap:非線程安全,不支持併發控制,允許空的鍵值對。

Hashtable:是線程安全,支持併發控制,不允許有空的鍵值對。

SortedMap接口:Map的子接口,按某一特定排序規則來存放所加入的鍵值對

實現類:TreeMap類。

Key值的排序規則,同SortedSet接口實現類TreeSet

注意:

key一般是8種基本類型的封裝類或者是String類,拿自己自定義的類作爲Key沒有意義。

key不可重複,value可以重複


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章