生動形象地說明集合框架家族

2021-09-27 13:20:20 字數 2447 閱讀 4888

首先第一大類介面(爺爺)collection,被第二大類介面(爸爸)list和set繼承

1.可以允許重複的物件。

2.可以有多個null。

3.是乙個有序集合(容器),保持了每個元素的插入順序,輸出的順序就是插入的順序。

4.常用的實現類(兒子)有 arraylist、linkedlist 和 vector。arraylist 最為流行,它提供了使用索引的隨意訪問,而 linkedlist 則對於經常需要從 list 中新增或刪除元素的場合更為合適。

採用的是陣列形式來儲存物件的,這種方式將物件放在連續的位置中,所以最大的缺點就是插入刪除時非常麻煩。(插入到中間,arraylist中的其他元素又要移位,可以理解為排隊大家往後挪個位,重新安排後面的人的號碼)

(所以可以更快定位你要新增或刪除的位置,只需要將改變插入處前後元素跟插入元素即可。相當於插隊時大家定位自己的位置是看誰在我前面或後面,這樣插入後面的元素的索引不會變。只會改變插入位置的元素兩邊。非常方便。)

2.但是缺點就是查詢非常麻煩 要從第乙個索引開始(比如說集合size=100,你要取40,根據原始碼,100>>1=50,40<50,需要從前往後迴圈,迴圈40遍取出node.item.

如果正好取中間那位或者排後面的,則從後往前迴圈,直到找到該元素。簡直不要太麻煩。)

與大兒子arraylist親近(相似),區別在於vecto執行緒安全(更保守,少數的執行緒安全的類,所以效能較慢)。.資料增長(擴容):當需要增長(擴容)時,vector預設增長為原來一培,而arraylist卻是原來的一半

1.不允許重複物件

2. 無序容器,你無法保證每個元素的儲存順序,treeset通過 comparator 或者 comparable 維護了乙個排序順序。

3. 只允許乙個 null 元素

4.set 介面最流行的幾個實現類是 hashset、linkedhashset 以及 treeset。最流行的是基於 hashmap 實現的 hashset;treeset 還實現了 sortedset 介面,因此 treeset 是乙個根據其 compare() 和 compareto() 的定義進行排序的有序容器。

只說明下個人覺得比較常見的:

我的理解是他就是hashmap裡的value,其儲存是標有hash值來存,取出也是依照hash值取出

treeset是sortedset介面的唯一實現(sortedset介面繼承set介面),正如sortedset名字所暗示的,treeset可以確保集合元素處於排序狀態。與前面的hashset集合相比,treeset還提供了一些額外方法:(自己去看api),該孫子較為複雜,紅黑樹結構。(自行單獨了解)

linkedhashset集合也是根據元素hashcode值來決定元素儲存位置,但它同時使用鍊錶維護元素的次序,這樣使的元素看起來是以插入的順序儲存的。也就是說當遍歷linkedhashset集合裡的元素時,hashset將會按元素的新增順序來訪問集合裡的元素。

linkedhashset需要維護元素的插入順序,因此效能略低於hashset的效能,但是在迭代訪問set裡的全部元素時,將有很好的效能,因為它以列表來維護內部順序。

1.map不是collection的子介面或者實現類。map是乙個介面。

2.map 的 每個 entry 都持有兩個物件,也就是乙個鍵乙個值,map 可能會持有相同的值物件但鍵物件必須是唯一的。

3. treemap 也通過 comparator 或者 comparable 維護了乙個排序順序。

4. map 裡你可以擁有隨意個 null 值但最多只能有乙個 null 鍵。

5.map 介面最流行的幾個實現類是 hashmap、linkedhashmap、hashtable 和 treemap。(hashmap、treemap最常用)

1.map是一種以鍵值對儲存資料的容器,而hashmap則是借助了鍵值key的hashcode值來組織儲存,使得可以非常快速和高效地地根據鍵值key進行資料的訪問。

2.對於鍵值對,hashmap內部會將其封裝成乙個對應的entry物件,即entry物件是鍵值對的組織形式;

3.對於每個物件而言,jvm都會為其生成乙個hashcode值。hashmap在儲存鍵值對entry的時候,會根據key的hashcode值,以某種對映關係,決定應當將這對鍵值對entry儲存在hashmap中的什麼位置上;

4.當通過key值取資料的時候,然後根據key值的hashcode和內部對映條件,直接定位到key對應的value值存放在什麼位置,可以非常高效地將value值取出。

與hashmap的區別是他為雙向鍊錶,是個有序的集合

hashtable和hashmap相似,其區別是hashtable是執行緒安全的

看名字就知道是紅黑樹結構的map啦,是個有序的集合。

總結到這發現了規律:

reactor模型 生動形象

網上有很多講解reactor模型的,我還是看了比較久才稍微領悟一點意思,那麼我就舉個例子講講自己的理解。我們首先先結合nio 多路復用的知識,做乙個比喻。大前提 餐館的服務員現在假設只有乙個 還需要兼職廚師 那麼當乙個客人來了之後,服務員會把選單給客人,然後就走開去迎接其他客人,當有客人點好餐的時候...

python裝飾器(形象生動)

python教程 www.piqizhu.com 關注我 python教程 131 人贊同了該回答 裝飾器就是把乙個猴子,塞入煉丹爐,然後就出來乙個還是會吃桃子,但有火眼金睛的猴子 還是原來的猴子,但多了特效技能。下面我們以下4個方面介紹python的裝飾器 什麼是裝飾器?為什麼python要引入裝...

非對稱加密形象說明

就拿a給b傳送經過簽名加密資訊來說 1 a對資訊簽名的作用是確認這個資訊是a發出的,不是別人發出的 2 加密是對內容進行機密性保護,主要是保證資訊內容不會被其他人獲取,只有b可以獲取。也就是保證整個過程的端到端的唯一確定性,這個資訊是a發出的 不是別人 且是發給b的,只有b才被獲得具體內容 別人就算...