集合區別:
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...