list、set繼承自collection儲存引用型別 且只能乙個乙個儲存
// ----------------------
arraylist linkedlist vector 都是繼承自list arraylist linkedlist初始化為10 擴容後為1.5倍 vector 為2倍
arraylist
底層採用的資料結構為陣列儲存元素,因為陣列儲存元素型別統一,每個元素在記憶體中佔的大小相同,在空間排列上是有順序的,只要有陣列首元素的記憶體位址,再加上偏移量就可快速定位要查詢的元素,所以適合查詢,不適合頻繁隨機增刪元素。
linkedlist
底層採用雙向鍊錶這種資料結構儲存資料的,鍊錶適合頻繁的增刪元素,不適合查詢操作。
vector
底層採用和arraylist一樣的資料結構儲存元素,都為陣列儲存,但是vector是執行緒安全的。由於vector效率比較低,現在很少使用。
// ----------------------
hashset sortedset 都是繼承自set
hashset
底層採用的是hashmap,hashmap的底層是雜湊表或者叫雜湊表
sortedset 下 treeset
sortedset儲存元素的特點為無序不可重複,但存進去的元素可以按照元素大小自動排列。
// ----------------------
map集合以鍵值對的方式儲存元素,鍵(k)的特點為無序不可重複的,map和collection沒有關係
map下的實現類包括hashmap,hashtable,子介面sortedmap
hashmap
底層採用的是雜湊表或者叫雜湊表 hashmap中的key等同於乙個set集合,無序不可重複
雜湊表是陣列和單向鍊錶的結合,雜湊表本身是乙個陣列,但是這個陣列中的每乙個元素又是單向鍊錶,類似於現實生活中的字典,初始化16個 當裡面元素佔到75%時擴容
hashtable
現在很少使用,執行緒安全的,效率低,但hashtable有個子類properties很常用,properties是個屬性類,也是k,v儲存元素 但kv只能是字串型別
sortedmap
其中的key儲存元素的特點是 無序不可重複,但是可以按照元素的大小順序自動排序,等同於sortedset
treemap繼承自sortedmap
treemap中的key就是乙個treeset
java 對於高併發的一些理解
併發是什麼 就是多個執行緒同時處理不同的操作 高併發 就是很多使用者同時訪問,導致系統資料不正確,出現髒讀等情況.常見的解決放法 硬體來說使用集群技術,更好的伺服器以及資料庫 從技術層面來說 使用快取,最常見的是redis,一般來說,可以允許丟失,變更頻率較低,全專案通用的,實際上還是要根據相應的業...
對於切片的一些理解
使用技巧 type struct 乙個切片是由資料指標加上長度和容量組成的,類似與c 中的vector。var a int 等價於nil b int 表示乙個空的切片,不等於nil c int len,cap都為3的切片 d c 2 cap為3,len為2。與c共享一片記憶體位址 e c 0 2 c...
對於多執行緒的一些理解
實現多執行緒的兩種方法 繼承thread類 實現runnable介面 jdk1.5之後提供了乙個心得callable介面 在啟動多執行緒的時候必須通過start 方法,而不能直接呼叫run 方法 原因 先來看下start 方法在thread類中的定義 public synchronized void...