java 集合框架 簡單介紹
問題:
1.集合框架是什麼?
2.為什麼需要集合框架,如果沒有集合框架,會怎樣?
3.使用了那種設計模式?
4.集合框架的核心演算法分析
1.集合框架是什麼?
集合框架是對常用的資料結構和演算法進行封裝的聚合體。
資料結構有: 陣列,連結串列,雜湊,樹,棧,佇列…………。
演算法:插入排序,快速排序,歸併排序……….
2.為什麼需要集合框架,如果沒有集合框架會怎樣?
為了提高程式的效能,java提供了對常用資料結構和演算法的分析,使程式設計師更加關注於實現業務邏輯。 避免自己實現資料結構和演算法。節省開發時間。 如果沒有集合框架,那麼我們要自己封裝資料結構和演算法,並且由於我們對演算法理解的不夠深入容易導致程式效能下降。
3. 使用了那種設計模式? 迭代器模式
先來看看集合框架的架構圖:
- collection 介面及其實現類
- map介面及其實現類
- iterator介面及其實現類
4.工具類
1.collection
介面主要實現 list和set資料結構。
list: 存放的資料可以重複 eg: 1 ,3,1 list 是可以的
set: 存放的資料是唯一 eg 1,3,1 set 只會存 1,3 這兩個值。
2.map
介面主要實現 map
map 存放資料 key ,value 鍵-值對。
3.iterator 迭代器模式
為了使用統一的介面對資料進行遍歷。
4.工具類
collections Arrays
簡要的的UML(union mode language 統一建模語言)類圖如下:
實現的資料結構:
集合設計思路:
最頂層介面抽象出最有共性的方法,然後下一層可以使用抽象類實現一小部分共性方法。期間抽象類和介面交替出現。
頂層介面: collection 使用了default method 是java8推出的新特性。(為了避免對已存的結構進行太大的變化,須知現實世界的複雜性,軟體的發展是人對世界的一個認識過程。)
集合中使用的技術: 內部類(iterator 迭代器實現,default方法,封裝,繼承,多型,各種演算法的實現。
首先要明白沒有最優的資料結構和演算法,只有最適合應用場景的資料結構和演算法。
例如以下 ArrayList 和LinkedList 的比較
ArrayList LinkedList
動態陣列 雙鏈表
操作相比慢,因為使用的是陣列,如果 操作相比是塊的,因為實現使用的是連結串列,刪
刪除陣列和插入陣列需要移動整個陣列。 除和插入元素很快。
ArrayList和LinkedList 的本質區別在於 陣列和連結串列的區別。優缺點也是陣列和連結串列的區別。
區分: vector和ArrayList 的本質區別是 verctor 是執行緒安全的,ArrayList不是執行緒安全的。
迭代器模式和具體演算法分析,不再本篇中介紹,會在後續單獨寫篇博文分享給大家。
關注我的公眾號第一時間閱讀有趣的技術故事
掃碼關注:
也可以在微信搜尋公眾號即可關注我:codexiulian
渴望與你一起成長進步!