JAVA 集合 Collection(5)

集合 Collection

collection

List :元素是有序的,元素可以重復,因為該集合體系有索引。

ArrayList:底層的數據結構使用的是數組結構。特點:查詢速度快,但是增刪稍慢,線程步同步

LinkedList:底層的使用的是鏈表結構。特點:增刪速度很快,查詢稍慢,線程不同步

Vector:底層是數組數據結構。線程同步。被ArrayList替代 因為效率低

Set:元素是無序的(存入和取出的順序不一定一致),元素不可重復

Set集合的功能和Collection是一致的

常見的子類

HashSet:底層數據結構是哈希表 線程是非同步的

HashSet是如何保證元素唯一性的呢?

通過元素的兩個方法,hashCode和equals來完成

如果元素的HashCode值相同,才會判斷equals是否為True

如果元素的HashCode值不同,不會調用equals

注意:對于判斷元素是否存在,以及刪除等操作,依賴的方法是hashCode和equals

TreeSet:可以對Set集合中的元素進行排序。compare to 進行排序

記住排序時當主要條件相同時,一定要比較次要條件

底層是2叉樹 保證元素唯一性的依據:compareto? ? 刪除 增加 都要在compareto中判斷

TreeSet的第二種排序方式。

當元素自身不具備比較性,或者具備的比較性不是所需要的

這時需要讓集合自身具備比較性(在集合初始化時,就具備比較方式)借助構造函數 new TreeSet(CompareInter)

泛型

泛型格式 :通過<>來定義要操作的引用數據類型

在使用java提供的對象時,什么時候寫泛型呢?

通常在集合框架中很常見

只要見到<>就要定義泛型

當使用集合時,將集合中要存儲的數據類型作為參數傳遞到<>即可

泛型類定義的泛型在整個類中有效,如果被方法使用

那么泛型類的對象明確要操作的具體類型后,所有要操作的類型就已經固定了

為了讓不同方法可以操作不同類型,而且類型還不確定

那么可以將泛型定義在方法上

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容