Android數(shù)據(jù)結(jié)構(gòu)有數(shù)組,棧佑附,隊(duì)列用含,鏈表,樹帮匾,圖啄骇,堆,散列表(hash表)瘟斜。
圖1
數(shù)組
圖2
圖2
- 數(shù)組具有下標(biāo)缸夹,下標(biāo)從0開始計(jì)數(shù),用于快速獲取數(shù)組中的數(shù)據(jù)
- 數(shù)組在創(chuàng)建的時(shí)候螺句,需要在內(nèi)存中申請(qǐng)一段固定長(zhǎng)度的內(nèi)存虽惭,如果申請(qǐng)的長(zhǎng)度超過內(nèi)存剩余長(zhǎng)度,則容易產(chǎn)生碎片導(dǎo)致存儲(chǔ)斏呱小芽唇;
- 數(shù)組便于查找和修改數(shù)據(jù),不便于增刪數(shù)據(jù);
- 數(shù)組分為數(shù)值數(shù)組匆笤,字符數(shù)組研侣,指針數(shù)組,結(jié)構(gòu)數(shù)組等炮捧;
棧
- 按照先進(jìn)后出的原則存儲(chǔ)數(shù)據(jù)庶诡;
- 棧分為順序棧和鏈?zhǔn)綏#?/li>
隊(duì)列
- 遵循先進(jìn)先出的原則存儲(chǔ)數(shù)據(jù);
- 隊(duì)列分為順序隊(duì)列和循環(huán)隊(duì)列咆课;
鏈表
- 在創(chuàng)建的時(shí)候末誓,不需要指定長(zhǎng)度,可以動(dòng)態(tài)調(diào)整長(zhǎng)度书蚪,不易產(chǎn)生碎片喇澡;
- 鏈表的每個(gè)元素分為數(shù)據(jù)和指針,指針指向下一個(gè)數(shù)據(jù)的地址殊校,從而形成串聯(lián)撩幽;
- 便于數(shù)據(jù)增刪,不便于數(shù)據(jù)查詢箩艺;
-
鏈表分為單向鏈表窜醉,雙向鏈表(LinkedList),循環(huán)列表艺谆;
圖3
樹
圖4
- 有且僅有一個(gè)根節(jié)點(diǎn)榨惰;
- 子樹之間不可以有交集;
- 樹分為無序樹静汤,有序樹琅催,二叉樹等;
- 樹的深度指的是樹的有多少層虫给;
- 一個(gè)節(jié)點(diǎn)的度指的是該節(jié)點(diǎn)下有多少個(gè)子節(jié)點(diǎn)藤抡;
- 二叉樹指的是每個(gè)結(jié)點(diǎn)的度≤2的樹。
- 樹的遍歷方式分為三種抹估,分別是前序遍歷(根左右)缠黍,中序遍歷(左根右),后序遍歷(左右根)药蜻;
圖
圖5
- 圖分為有向圖和無向圖瓷式,區(qū)別在于邊是否有方向;
- 圖主要涉及到的內(nèi)容是最短路徑语泽;
堆
圖6
- 堆分為最小堆和最大堆贸典,區(qū)別在于所有父節(jié)點(diǎn)是否大于等于其子節(jié)點(diǎn),是則是最大堆踱卵,否則反之廊驼;
- 堆是一顆完全二叉樹;
散列表(hash表)
圖7
- 便于插入,查找等操作妒挎;
- key以數(shù)組的方式存儲(chǔ)在棧內(nèi)存中绳锅,value以鏈表的方式存儲(chǔ)在堆空間中;
- 不同的key通過哈希函數(shù)可能得到相同的結(jié)果饥漫,這時(shí)候就發(fā)生了哈希碰撞榨呆;