Java常見基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)
棧:
stack,又稱堆棧,他是運算受限的線性表,其限制是僅允許在表的一端進行插入和刪除操作,不允許在其他任何位置進行添加、查找、刪除等操作。
簡單的來說,采用該結(jié)構(gòu)的集合,對元素的存取有如下幾個特點
1、先進后出。
2、棧的入口、出口都是棧的頂端位置。
壓棧:就是存元素,把元素存儲到棧的頂端位置,棧中已有元素一次向棧底方向移動一個位置。
彈棧:就是取元素,把棧頂端的元素取出,棧中已有元素依次向棧頂方向移動一個位置。
隊列:
queue,簡稱隊,它同堆棧一樣,也是運算受限的線性表,其限制是只允許在表的一端進行插入,而在表的另一端進行刪除。
簡單來說,采用該結(jié)構(gòu)的集合,對元素的存取有如下的特點:
1、先進先出
2、隊列的入口、出口各占一側(cè),例如左側(cè)為入口,右側(cè)為出口
數(shù)組:
Array,是一個有序的元素序列,數(shù)組是在內(nèi)存中開辟出一端連續(xù)的空間,并在此空間存放元素,可以通過索引快速找到對應(yīng)的數(shù)據(jù)。
采用此方式存儲數(shù)據(jù)有如下幾個特點:
1、查找元素快,通過索引可以快速訪問指定位置的元素。
2、增刪元素慢,在指定索引位置增加元素,需要創(chuàng)建一個新的數(shù)組,將指定新元素存儲在指定的索引位置,然后再把原數(shù)組元素根據(jù)索引,復制到新數(shù)組對應(yīng)的索引位置
刪除元素,需要創(chuàng)建一個新數(shù)組,把原數(shù)組元素根據(jù)索引,復制到新數(shù)組對應(yīng)索引的位置,原數(shù)組中指定索引位置元素不復制到新數(shù)組中。
鏈表:
Linked List,由一系列結(jié)點node組成,結(jié)點可以在運行時動態(tài)生成。每個結(jié)點包括兩部分:一個是存儲數(shù)據(jù)元素的數(shù)據(jù)域,另一個是存儲下一個結(jié)點地址的指針域。鏈表分為單向鏈表和雙向鏈表,雙向鏈表是指有上一個結(jié)點的引用和下一個結(jié)點的指針,單向鏈表是只有下一個結(jié)點的指針。
簡單的說,采用該數(shù)據(jù)結(jié)構(gòu)的集合,對數(shù)據(jù)的存儲有如下幾個特點:
- 多個結(jié)點之間,通過地址進行連接。
- 查詢慢,如果想查找某個元素,需要通過連接的結(jié)點依次向后查找。
- 增刪快,只需要修改連接下一個元素的地址即可。
紅黑樹:
二叉樹:是每個結(jié)點不超過2的有序樹
簡單理解,二叉樹是每個結(jié)點最多有兩個子樹的樹結(jié)構(gòu)。頂上的叫根節(jié)點,兩邊被稱作為左子樹和右子樹。
紅黑樹本身就是一顆二叉查找數(shù),將節(jié)點插入后,該數(shù)仍然是一顆二叉查找數(shù),也就意味之數(shù)的鍵值仍然是有序的。
紅黑樹的約束:
- 節(jié)點可以是紅色的或者黑色的
- 根節(jié)點是黑色的
- 葉子節(jié)點是黑色的
- 每個紅色節(jié)點的子節(jié)點都是黑色的
- 任何一個節(jié)點到其每一個葉子節(jié)點的所有路徑上黑色節(jié)點數(shù)相同
紅黑樹的特點:
速度特別快,趨近平衡樹,查找葉子元素最少和最多次數(shù)不多于兩倍。
總結(jié)
本篇文章就到這里了,希望可以幫到你,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Java CountDownLatch與CyclicBarrier及Semaphore使用教程
對于并發(fā)執(zhí)行,Java中的CountDownLatch是一個重要的類。為了更好的理解CountDownLatch這個類,本文將通過例子和源碼帶領(lǐng)大家深入解析CountDownLatch與CyclicBarrier及Semaphore的原理,感興趣的可以學習一下2023-01-01
javaSE基礎(chǔ)如何通俗的理解javaBean是什么
所謂的Java Bean,就是一個java類,編譯后成為了一個后綴名是 .class的文件。這就是Java Bean,很多初學者,包括當年的我自己,總是被這些專有名詞搞的暈頭轉(zhuǎn)向2021-10-10
Java7之forkjoin簡介_動力節(jié)點Java學院整理
Java7引入了Fork Join的概念,來更好的支持并行運算。接下來通過本文給大家分享Java7之forkjoin簡介,感興趣的朋友一起看看吧2017-06-06
Java多例Bean的應(yīng)用場景-easyExcel導入
EasyExcel 是一個基于 Java 的簡單、省內(nèi)存的讀寫 Excel 的開源項目。這篇文章主要介紹了用easyExcel導入Java Bean的應(yīng)用場景,感興趣的朋友可以參考閱讀2023-04-04

