數據與鏈表,指針,集合的區別

討論數據結構之間的區別,本質上是討論數據結構的構造,內存分配,增刪改查效率,應用場景這幾個層次來考慮,針對數據和鏈表的區別我們大概可以做如下的歸納。


數組:線性數據結構;連續內存空間,無法改變容量;存儲相同類型數據;支持隨機訪問(查詢),插入、刪除較慢(時間複雜度O(n),因爲要涉及遍歷定位);業務開發中,適合做底層數據結構。(這點不知道你有沒有和我一樣在探索String,Nginx,Redis等等吧的時候,也一樣疑惑或底層數據結構爲什麼都是數組)
鏈表:鏈式數據結構;非連續內存,內存可擴充;存儲相同數據類型;插入,刪除高效,查詢依賴算法。在使用中一般不會單純的使用鏈表,而是會通過鏈表構建,紅黑樹,平衡樹,基數樹,跳躍表,Btree等等的數據結構來平衡增刪改查的效率問題。
指針:指針相當於一個變量,它存放的是其它變量在內存中的地址。
集合:JAVA提供內置集合包括list,map,set等,特點是分配的內存空間不連續,可擴容;數據類型未聲明時爲Object(也即可存放多種數據類型),增刪改查依賴具體實現。


 總結:我還是覺得有時候不要太糾結數據結構,我們要先明確自己的核心需求,然後根據核心需求去選擇,如果真的沒有合適的數據結構,發動自己的創新精神設計一個就好。從某種角度上說能發現所有數據結構都無法滿足需求,這種情況對研發人員來說是人之大幸,這不僅需要研發人員具備紮實的基礎功底,還要有積極的探索精神,最終要的是還要有他有強烈的興趣和責任感。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章