集合學習總結 2019 10

2021-09-28 23:21:52 字數 2019 閱讀 8994

collection介面下的集合

1.list介面下常用實現類

一.arraylist

//建立方法

list

list=

newarraylist

();/**

*預設建立長度為10,可以在構造方法中指定想要建立的長度

*當容量達到上限後會以原容量的1.5倍進行擴容

*arraylist底層以動態陣列實現,有序可重複

*查詢效率高,增刪效率低,執行緒不安全

*資料量大時,越往後插入資料效率越高

二.linkedlist

//建立方法

list

list=

newlinkedlist

();/**

*底層以雙向迴圈鍊錶實現,執行緒不安全

*查詢效率低,增刪效率高,尤其首尾元素增刪,越往中間插入效率越低

三.vetctor

//建立方法

list

list=

newvector

<

>()

;/**

*執行緒安全,效率低

2.set介面下常用實現類

一.hashset

//建立方法

setset=

newhashset

<

>()

;/**

*無序不可重複集合,底層新增方法呼叫的就是map集合的put方法

*hashset在新增元素時會呼叫hashcode方法和eqauls方法進行判斷.

*獲取該元素hash值,和已存在元素進行比較,若不同則直接存入,若相同

*則呼叫eqauls方法進行判斷,值相同,不存入集合.

***拓展:

*雜湊演算法:在hashmap中有乙個內部類entry.儲存時先獲取物件的hash碼值,用hash碼值

*對集合長度進行取模得出儲存位置,再將key和value封裝為乙個entry物件存入該位置.

*若再次存入則先比較hash值是否相同,不同則存入集合,相同比較eqauls方法,若相等則

*覆蓋原來值,不同則形成鍊錶存入,在jdk8中,當儲存元素長度超過8時會轉換為紅黑樹儲存

*,減少到6時轉回鍊錶.

二.linkedhashset

//建立方法

setset=

newlinkedhashset

<

>()

;/**

*改善了hashset無序的缺點

*linkedhashset有序不可重複,執行緒不安全

*建立linkedhashset會得到乙個初始長度為16,載入因子為0.75的map容器

3. map介面下常用實現類

一.hashmap

//建立方法

mapmap=

newhashmap

<

>()

;/**

*hashmap以key,value形式儲存,執行緒不安全.

*初始容量為16,當載入因子到0.75時自動擴容並重新執行雜湊運算存入擴容後的集合中

*允許儲存乙個null key或多個null value

*擴容後容量將變為原來的2倍

二.hashtable

//建立方法

mapht=

newhashtable

<

>()

:/**

*hashtabel從jdk1.0開始就存在,是執行緒安全的

*以key,value形式儲存

*初始容量為11,擴容後為原容量的2倍+1

*儲存null key 或 null value 編譯期會通過,執行期會丟擲空指標異常

學習總結 對映集合

對映 對映的組成 鍵 值對 key value 在乙個map中,鍵key是不可以重複的,是唯一的,value是可以重複的,乙個鍵key對應乙個值value 有hashmap,treemap,linkedhashmap三種,特點與set類似 格式 maplove new hashmap jdk6 格式...

集合框架學習總結

集合實際用來儲存物件 object 但需要注意的是,集合存放的實質上是物件的位址。接下來我們先來看一下集合框架圖,如下 同一顏色方框,我將它們視為同一級 首先由上圖確認一下它們的關係 collection 介面 set 介面 儲存元素特點 元素無序,元素不可以重複,與list集合體系本質區別就是無索...

集合學習總結二

hase表原理 簡單的說他是通過一種演算法來計算雜湊值,類似於我們獲取到乙個資料然後給他取餘數 被除數是雜湊表的表長。這樣優勢在於 訪問速度快。但同時有乙個問題就是雜湊衝突。簡單來說就是我們100 9 1 10 1 這兩個算下來的雜湊值一樣。這時候就需要考慮 怎麼放置資料。解決雜湊衝突 首先判斷兩個...