網(wǎng)站首頁 編程語言 正文
一、數(shù)組(Array)
數(shù)組具有以下的特點:
- 數(shù)組屬于線性結(jié)構(gòu),在內(nèi)存中是連續(xù)存放的。
- 數(shù)組的元素類型必須相同。
- 數(shù)組可以直接通過下標(biāo)訪問。
- 數(shù)組的查找速度非常快,新增和刪除速度慢。
- 數(shù)組在初始化時要指定數(shù)組長度。
二、動態(tài)數(shù)組(ArrayList)
動態(tài)數(shù)組具有以下的特點:
- ArrayList的底層其實就是一個數(shù)組。
- ArrayList在聲明時不必指定長度,會根據(jù)存儲的數(shù)據(jù)動態(tài)的增加或減少長度。
- ArrayList會把所有的元素都當(dāng)做Object處理,因此可以存儲不同數(shù)據(jù)類型的元素。
- 插入和刪除一個元素時,會移動它之后所有元素的位置,效率低,頻繁進行插入或者刪除元素推薦使用LinkedList。
- ArrayList是非類型安全的,在插入和刪除元素時會進行拆箱和裝箱問題,影響性能,效率低。
三、泛型List
泛型List具有以下的特點:
- List是ArrayList的泛型類。
- 泛型List需要在聲明時指定具體的類型。
- 泛型List沒有裝箱和拆箱操作,因此List比ArrayList效率高而且類型安全。
四、雙向鏈表(LinkedList)
雙向鏈表具有如下特點:
- 鏈表的節(jié)點在內(nèi)存中的空間是不連續(xù)的,每塊空間稱作一個節(jié)點,每個節(jié)點都存有一個前驅(qū)和后置指針,分別指向前一個節(jié)點和后一個節(jié)點,因此向鏈表中添加和刪除元素的效果高,只需要更改相應(yīng)節(jié)點的指針指向即可。
- 鏈表的查找效率低。查找元素時不能通過下標(biāo)進行訪問,只能從頭開始通過地址按順序查找。
五、堆棧(Stack)
堆棧具有如下特點:
- 堆棧是先進后出的原則,最先插入的元素最后被訪問,最后插入的元素最先被訪問。
- Push入棧,Pop出棧并返回棧頂元素,Peek只返回棧頂元素。
六、Queue(鏈表)
鏈表具有以下特點:
- 鏈表是先進先出的原則,最先進入的元素最先被訪問,最后進入的元素最后被訪問。
- Enqueue入隊列,Dequeue出隊列并返回列首元素,Peek只返回列首元素。?
七、字典(Dictionary)
字典具有以下特點:
- 創(chuàng)建字典時需要指定key和value的數(shù)據(jù)類型。
- 字典中的key值是唯一的,value的值可以不唯一。
- 可以通過key快速查找對應(yīng)的value,速度快,但是消耗內(nèi)存。
幾種常見數(shù)據(jù)結(jié)構(gòu)的使用情景
Array | 需要處理的元素數(shù)量確定并且需要使用下標(biāo)進行訪問時可以考慮,不過建議使用List |
ArrayList | 不推薦使用,建議使用泛型List |
泛型List |
需要處理的元素數(shù)量不確定時,通常建議使用。 |
LiskedList |
鏈表適合元素數(shù)量不固定,而且需要經(jīng)常增減節(jié)點的情況,鏈表增減元素效率高。 |
Queue |
隊列適合于先進先出的情況。 |
Stack |
堆棧適合于先進后出的情況。 |
Dictionary |
字典適合于需要鍵值對操作的情況。 |
原文鏈接:https://www.cnblogs.com/dotnet261010/p/12333598.html
相關(guān)推薦
- 2022-11-13 C語言在輸入輸出時遇到的常見問題總結(jié)_C 語言
- 2022-07-02 C++精要分析右值引用與完美轉(zhuǎn)發(fā)的應(yīng)用_C 語言
- 2022-05-25 ASP.NET?Core?6.0對熱重載的支持實例詳解_實用技巧
- 2022-11-18 一文搞懂正則表達式基礎(chǔ)語法以及如何應(yīng)用_正則表達式
- 2022-11-05 GO?CountMinSketch計數(shù)器(布隆過濾器思想的近似計數(shù)器)_Golang
- 2022-09-04 Go語言之init函數(shù)_Golang
- 2022-06-27 使用Golang搭建web服務(wù)的實現(xiàn)步驟_Golang
- 2022-01-16 npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR!
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支