1.1數據結構
Java提供了豐富的容器技術,這些容器技術在底層是經過各類各樣的數據結構來實現。現實生活中的存儲,咱們使用的是工具和建模。每種數據結構都有本身的優勢和缺點,爲了方便查詢等一系列操做,引進算法概念,來幫助咱們在存儲的數據中作到最快的插入,刪除,查找等操做,常見的數據結構:堆棧、隊列、數組、鏈表和紅黑樹等。node
1.2常見的數據結構:
1.2.1 棧(stack)
棧
是運算受限的線性表,其限制是僅容許在棧的一端進行插入和
刪除操做,不容許在其它任何位置進行添加,查找,刪除等操做。
- 先進後出:存進去的元素,要在後它後面的元素依次取出後,才能取出該元素
- 壓棧:存元素,把元素存在棧的頂端位置
- 彈棧:取元素,把棧頂端元素取出
1.2.2 隊列(queue)
隊列:
同堆棧同樣,也是一種運算受限的線性表,其限制是僅容許在
隊列的一端進行插入,而在隊列的另外一端進行刪除。
1.2.3數組(Array)
數組:有序的元素序列,數組是在內存中開闢一段連續的空間,並在此空間存放元素。算法
- 查找元素快,經過索引,能夠快速訪問指定位置上的元素
- 增刪元素慢:指定索引增長元素,須要建立一個新的數組,將指定的新元素存儲在指定位置,把原數組中的元素根據索引,複製到數組對應的位置上,至關於從刪除元素的索引開始,後一個索引內容覆蓋前一個索引內容。
1.2.4 鏈表(Linked list)
鏈表:linked list 由一系列結點node(鏈表中的每個元素成爲節點)組成,節點能夠在運行時動態生成。每一個節點包括兩部分:yige存儲數據的數據域,另外一個是存儲下一節點地址的指針域,咱們常說的鏈表結構有單向鏈表和雙向鏈表,這裏研究單向鏈表數組
- 多個節點之間,經過地址進行鏈接。
- 查找元素慢,想要查找某個元素,須要經過鏈接的節點,依次向後查找指定的元素
- 增刪元素快:增長時,只須要修改鏈接下個元素的地址;刪除時,只須要修改鏈接下個元素的地址便可
1.2.5紅黑樹(二叉樹binary tree)
二叉樹:每一個節點不超過2的有序樹,存放的數據必須是可排序的數據結構
- 每一個節點最多有兩個子節點
- 二叉樹是每一個節點最多有兩個節點的樹結構,頂上叫根節點,兩邊叫左右子樹