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 這兩個算下來的雜湊值一樣。這時候就需要考慮 怎麼放置資料。解決雜湊衝突 首先判斷兩個...