對於java 集合的一些理解

2021-07-03 21:33:42 字數 1272 閱讀 9164

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...