集合 Collection
collection
List :元素是有序的追驴,元素可以重復(fù),因為該集合體系有索引疏之。
ArrayList:底層的數(shù)據(jù)結(jié)構(gòu)使用的是數(shù)組結(jié)構(gòu)殿雪。特點:查詢速度快,但是增刪稍慢锋爪,線程步同步
LinkedList:底層的使用的是鏈表結(jié)構(gòu)丙曙。特點:增刪速度很快,查詢稍慢其骄,線程不同步
Vector:底層是數(shù)組數(shù)據(jù)結(jié)構(gòu)亏镰。線程同步。被ArrayList替代 因為效率低
Set:元素是無序的(存入和取出的順序不一定一致)拯爽,元素不可重復(fù)
Set集合的功能和Collection是一致的
常見的子類
HashSet:底層數(shù)據(jù)結(jié)構(gòu)是哈希表 線程是非同步的
HashSet是如何保證元素唯一性的呢索抓?
通過元素的兩個方法,hashCode和equals來完成
如果元素的HashCode值相同毯炮,才會判斷equals是否為True
如果元素的HashCode值不同逼肯,不會調(diào)用equals
注意:對于判斷元素是否存在,以及刪除等操作桃煎,依賴的方法是hashCode和equals
TreeSet:可以對Set集合中的元素進行排序篮幢。compare to 進行排序
記住排序時當(dāng)主要條件相同時,一定要比較次要條件
底層是2叉樹 保證元素唯一性的依據(jù):compareto? ? 刪除 增加 都要在compareto中判斷
TreeSet的第二種排序方式为迈。
當(dāng)元素自身不具備比較性洲拇,或者具備的比較性不是所需要的
這時需要讓集合自身具備比較性(在集合初始化時奈揍,就具備比較方式)借助構(gòu)造函數(shù) new TreeSet(CompareInter)
泛型
泛型格式 :通過<>來定義要操作的引用數(shù)據(jù)類型
在使用java提供的對象時,什么時候?qū)懛盒湍兀?/p>
通常在集合框架中很常見
只要見到<>就要定義泛型
當(dāng)使用集合時赋续,將集合中要存儲的數(shù)據(jù)類型作為參數(shù)傳遞到<>即可
泛型類定義的泛型在整個類中有效男翰,如果被方法使用
那么泛型類的對象明確要操作的具體類型后,所有要操作的類型就已經(jīng)固定了
為了讓不同方法可以操作不同類型纽乱,而且類型還不確定
那么可以將泛型定義在方法上