编程体系结构(03):Java集合容器
本文源碼:GitHub·點(diǎn)這里 || GitEE·點(diǎn)這里
一、集合容器簡介
集合容器是Java開發(fā)中最基礎(chǔ)API模塊,通常用來存儲運(yùn)行時動態(tài)創(chuàng)建的元素,基本特點(diǎn)如下:
- 泛型特點(diǎn),存儲任意類型對象;
- 動態(tài)擴(kuò)容,存儲任意數(shù)量對象;
這里對存儲數(shù)量是受到程序和內(nèi)存等環(huán)境制約的,從List的get()方法中可以看出,index的范圍是Integer.MAX_VALUE。
二、API體系
三大核心接口:List、Set繼承Collection, Map獨(dú)立接口
List與Set體系
List體系核心API:ArrayList,LinkedList、Vector
Set體系核心API:HashSet、TreeSet、LinkedHashSet
Queue隊(duì)列API:PriorityQueue、LinkedHashSet
Map體系
Map體系核心API:HashMap、LinkedHashMap、TreeMap、Hashtable
三、基礎(chǔ)容器詳解
1、核心內(nèi)容
- 元素存儲,增刪改查判斷等基礎(chǔ)用法
- API方法中線程安全問題
- 容器初始化大小與動態(tài)擴(kuò)容機(jī)制
- 底層數(shù)據(jù)結(jié)構(gòu)特點(diǎn)
- 同一接口或者不同接口體系容器對比
基本熟練使用并理解集合容器,需要知道如上幾塊內(nèi)容:API基礎(chǔ)用法,線程安全問題;容器大小與擴(kuò)容;結(jié)構(gòu)特點(diǎn),數(shù)組、鏈表、哈希表;
2、API體系詳解
Collection:集合容器的根接口,定義公共方法;
List體系:
- ArrayList
維護(hù)Object數(shù)組實(shí)現(xiàn),特點(diǎn):查詢快,增刪慢,非線程安全,所以效率高。
- LinkedList
底層維護(hù)鏈表數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn),特點(diǎn):查詢慢,增刪快,非線程安全,所以效率高。
- Vector
底部維護(hù)Object數(shù)組,實(shí)現(xiàn)和ArrayList一樣,但是Vector是線程安全,效率低。
Set體系:
- HashSet
底層是使用了哈希表來支持的,特點(diǎn):存取速度快,元素唯一且無序。
- LinkedHashSet
底層數(shù)據(jù)結(jié)構(gòu)是鏈表和哈希表,鏈表保證元素有序性,哈希表保證元素唯一性,非線程安全。
- TreeSet
數(shù)據(jù)結(jié)構(gòu)是紅黑樹,如果元素具備自然順序的特性,那么就按照元素自然順序的特性進(jìn)行排序,或者基于比較器自定義排序。
Map體系:
Map接口的實(shí)現(xiàn)類,具備的特點(diǎn):存儲的數(shù)據(jù)都是以鍵值對的方式,鍵不可以重復(fù),值可重復(fù)。
- HashMap
底層使用hashCode表來實(shí)現(xiàn)向HashMap中添加元素,允許使用null值和null鍵,不保證元素的順序固定。
- TreeMap
TreeMap:基于二叉樹的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)的,會對具備自然特性的鍵進(jìn)行排序存儲:元素的鍵具備自然特性,直接排序存儲;不具備自然特性,實(shí)現(xiàn)Comparable接口,在ComparaTo中定義排序規(guī)則。
- HashTable
線程安全,相對效率低,不允許使用null值。
3、容器遍歷
- 基于for、foreach、while流程控制
- Iterable迭代器核心接口
- Lambda表達(dá)式:遍歷、分組、查詢
四、源代碼地址
GitHub·地址 https://github.com/cicadasmile GitEE·地址 https://gitee.com/cicadasmile推薦閱讀:架構(gòu)設(shè)計(jì)系列
| 架構(gòu)設(shè)計(jì):單服務(wù).集群.分布式,基本區(qū)別和聯(lián)系 |
| 架構(gòu)設(shè)計(jì):分布式業(yè)務(wù)系統(tǒng)中,全局ID生成策略 |
| 架構(gòu)設(shè)計(jì):分布式系統(tǒng)調(diào)度,Zookeeper集群化管理 |
| 架構(gòu)設(shè)計(jì):接口冪等性原則,防重復(fù)提交Token管理 |
| 架構(gòu)設(shè)計(jì):緩存管理模式,監(jiān)控和內(nèi)存回收策略 |
| 架構(gòu)設(shè)計(jì):異步處理流程,多種實(shí)現(xiàn)模式詳解 |
| 架構(gòu)設(shè)計(jì):高并發(fā)流量削峰,共享資源加鎖機(jī)制 |
| 架構(gòu)設(shè)計(jì):分布式服務(wù),庫表拆分模式詳解 |
| 架構(gòu)設(shè)計(jì):分布式事務(wù)①概念簡介和基礎(chǔ)理論 |
| 架構(gòu)設(shè)計(jì):基于電商交易流程,圖解TCC事務(wù)分段提交 |
| 架構(gòu)設(shè)計(jì):基于消息中間件,圖解柔性事務(wù)一致性 |
總結(jié)
以上是生活随笔為你收集整理的编程体系结构(03):Java集合容器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LOG4J原理以及配置的研究
- 下一篇: LTM设备上ping不通网关