各種集合類的區別以及原理

2022-01-11 18:07:56 字數 1451 閱讀 3459

集合區別:

list:(有序可重複)

arraylist:底層實現是陣列,但是沒有定義具體的長度和大小,有下標,所以查詢快,增刪慢,執行緒不安全

linkedlist: 底層是鍊錶,因為有指標所以增刪快查詢慢,執行緒不安全

vector:底層是陣列,執行緒安全,有下標所以查詢快增刪慢,有

synchronized

修飾,現已被

arraylist

替代set:(無序不重複

)hashset:底層是

hash

表結構,實現了

set介面,其實是基於

hashmap

實現的,不能有

null

值,在新增資料時(

add方法),會呼叫物件的

hashcode()

方法在set

中去查詢,比較要新增的值和

set中的值若是

hash

值相等,若是相等則用

equals

方法比較,如果不相等,則新增

(說明沒有重複的值

)treeset:底層是二叉樹結構,不可以存重複物件,根據資料自身進行排序,如果沒有可比性,則實現

comparable

介面重寫

compareto方法(

該方法是使某個物件具有可比性

),也可重寫

compartor

介面重寫

compare方法(

該方法是使某個集合具有可比性

)map:

(存鍵值對

)hashmap:底層是雜湊表(陣列

+鍊錶)結構,執行緒不安全,可以存乙個

null

鍵和多個

null

值,若要執行緒安全則

collections.synchronizedmap()

方法,在新增新值的時候

(put)

會去計算將新增

key值的

hashcode

,hashcode%length = i

,要存的

entry

,若此時

entry

上已經有值了

那麼在這個位置上的元素將以鍊錶的形式存放,新加入的放在鏈頭,最先加入的放在鏈尾。如果陣列該位置上沒有元素,就直接將該元素放到此陣列中的該位置上。

hashtable:底層是雜湊表(陣列

+鍊錶)結構,執行緒安全,不可以存

null

鍵或者null

值treemap:底層實二叉樹結構,可以存重複物件,實現

comparable

介面重寫

compareto方法(

該方法是使某個物件具有可比性

),也可重寫

compartor

介面重寫

compare方法(

該方法是使某個集合具有可比性

)

定義各種類,以及類的使用

定義貓類 class cat def init self,name,color self.name name self.color color def eat self print f 在吃的大公尺 cat cat 小花 白色 cat.eat class dog def init self,name...

Foreach遍歷集合類原理

下面的 示例闡釋如何編寫可與foreach一起使用的非泛型集合類。該類是字串標記化拆分器,類似於 c 執行時函式 strtok s。1 using system 2using system.collections.generic 3using system.linq 4using system.te...

java集合類原理分析

collection list arraylist 是有序的 非執行緒安全 基於陣列實現 相比較linkedlist對於陣列的查詢和更新效率較高 底層實現 內部有乙個object陣列,預設初始化陣列大小是10,每當陣列容量不夠時候,會動態擴充套件陣列的長度,按照一次原來1.5倍的速度擴增,呼叫arr...