集合类
hashmap基于哈希表的map接口實(shí)現(xiàn)。查詢速度快。線程不安全。
底層:數(shù)組+鏈表
哈希沖突解決:
jdk1.7:位桶+鏈表
jdk1.8:位桶+鏈表+紅黑樹(shù) 當(dāng)鏈表長(zhǎng)度超過(guò)閾值(8)時(shí),會(huì)將鏈表轉(zhuǎn)化為紅黑樹(shù),減少查詢時(shí)間。
數(shù)組長(zhǎng)度是不改變的,集合創(chuàng)建后長(zhǎng)度是可以改變的。
集合分支體系
Collection ? ?? 以value形式存儲(chǔ)
?? list有序可重復(fù)?
arrayList ? 底層:動(dòng)態(tài)數(shù)組? 1.5 ///? 特點(diǎn):適合遍歷和輪訓(xùn),不適合插入和刪除 ///使用方法:無(wú)參 有參///常用方法:add remove get set size indexOf sublist、toArray
Vector ? ? ? 底層:arrayList的早期版本 擴(kuò)容默認(rèn)2倍///特點(diǎn):線程同步(sync) 、安全性高、效率低
linkedlist
stack ? ? ? ? 底層:繼承了vector peek pop push?
set無(wú)序不可重復(fù)
hashset ?? 底層:hashmap? 16 0.75? ///通過(guò)set集合獲取迭代器 ///無(wú)重復(fù)的原則:默認(rèn)比較的是地址,用equals方法來(lái)比較+hashcode()
Iterator<String> it=set.iterator();while(it.hasNext()){ String value=it.next;}? ? ? treeset ? ? 底層:treemap 本身有順序,按自然順序比,compareTo?
Queue
linkedlist 底層:雙向循環(huán)鏈表。同時(shí)實(shí)現(xiàn)了list和queue接口 修改性能較好
Map ? 以key-value形式存儲(chǔ)
key無(wú)序無(wú)重復(fù) value無(wú)序可重復(fù)
hashmap ?? 結(jié)合了數(shù)組加鏈表的優(yōu)勢(shì)。既想要查詢效率快,也想要增刪效率高。
Node<K,V> 初始大小:16? 擴(kuò)容:16*0.75 ? 鏈表長(zhǎng)度:8 超過(guò)后,? 紅黑樹(shù)? jdk1.8?
hashtable (加sync:效率低)
concurrentHashMap:并發(fā)操作 value值由volatile修飾
segment :繼承reentrantlock ? ?
treemap ? ?
?
轉(zhuǎn)載于:https://www.cnblogs.com/NeverGiveUp0/p/11123468.html
總結(jié)
- 上一篇: kubernetes实战篇之通过api-
- 下一篇: (18)打鸡儿教你Vue.js