容器底層

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的有序樹,存放的數據必須是可排序的數據結構

  • 每一個節點最多有兩個子節點
  • 二叉樹是每一個節點最多有兩個節點的樹結構,頂上叫根節點,兩邊叫左右子樹
相關文章
相關標籤/搜索