C# :數(shù)組 吭从、ArrayList朝蜘、List、鏈表影锈、棧芹务、隊列,Hashset的不同Day0816

幾種常見數(shù)據(jù)結(jié)構(gòu)的使用情景?

Array?? 需要處理的元素數(shù)量確定并且需要使用下標時可以考慮蝉绷,建議使用List<T>

ArrayList? 不推薦使用,建議用List<T>

List<T>? 需要處理的元素數(shù)量不確定時 通常建議使用

LinkedList? 鏈表適合元素數(shù)量不固定枣抱,需要經(jīng)常增減節(jié)點的情況熔吗,2端都可以增減Queue 先進先出的情況

Stack 后進先出的情況

Dictionary 需要鍵值對,快速操作



1.數(shù)組

容量固定佳晶,類型固定

數(shù)組存儲在連續(xù)的內(nèi)存上,順序存儲結(jié)構(gòu)數(shù)組可以直接通過下標訪問桅狠。

int[ ] myInt=new int[2,6,3];

創(chuàng)建一個新的數(shù)組時將在堆 中分配一塊連續(xù)的內(nèi)存空間,來盛放數(shù)量為size 轿秧,類型為所聲明類型的數(shù)組元素中跌。如果類型為 值類型, 則將會有 size 個 未封箱 的 該類型的值被創(chuàng)建菇篡。如果類型 為 引用類型漩符, 則將會有 size個相應(yīng)類型的 引用 被創(chuàng)建。

缺點:由于是連續(xù)存儲驱还,所以在兩個元素之間插入新的元素就變得不方便嗜暴。聲明一個新的數(shù)組時, 必須 指定其長度议蟆,這就會存在一個潛在的問題闷沥,長度過長時,顯然會浪費內(nèi)存咐容,長度過短的時候舆逃,則面臨這溢出的風險。這樣不好戳粒!

2.ArrayList(這個不用路狮,不安全)

容量不固定,類型不固定

ArrayList中插入不同類型的數(shù)據(jù)是允許的享郊。

ArrayList al = new ArrayList { 11, "string", 10.25 };

因為ArrayList會把所有插入其中的數(shù)據(jù)當作為object類型來處理览祖,用ArrayList處理數(shù)據(jù)時,很可能會報類型不匹配的錯誤炊琉,也就是ArrayList不是類型安全的。在存儲或檢索值類型時通常發(fā)生裝箱和取消裝箱操作又活,帶來很大的性能耗損苔咪。

3.List(用這個)

容量不固定,類型固定

在聲明List集合時柳骄,我們同時需要為其聲明List集合內(nèi)數(shù)據(jù)的對象類型团赏。

它的大部分用法都與ArrayList相似,因為List類也繼承了IList接口耐薯。最關(guān)鍵的區(qū)別在于舔清,確保了 類型安全 丝里。

List<int>? myList=new List<int >{11,22,33,66};


4.LinkedList鏈表

鏈表適合 元素數(shù)量不固定 ,需要 經(jīng)常增減節(jié)點 的情況体谒。

和數(shù)組最大的不同之處就是在于鏈表在內(nèi)存存儲的排序上可能是不連續(xù)的杯聚。

這是由于鏈表是通過上一個元素指向下一個元素來排列的,不能通過下標來訪問抒痒。

特點就是存儲在內(nèi)存的空間不一定連續(xù)幌绍,那么鏈表相對于數(shù)組最大優(yōu)勢和劣勢就顯而易見了。

1.向鏈表中插入或刪除節(jié)點無需調(diào)整結(jié)構(gòu)的容量故响。因為本身不是連續(xù)存儲而是靠各對象的指針所決定傀广,所以添加元素和刪除元素都要比數(shù)組要有優(yōu)勢。

2.鏈表適合在需要有序的排序的情境下增加新的元素彩届,這里還拿數(shù)組做對比伪冰,例如要在數(shù)組中間某個位置增加新的元素,則可能需要移動移動很多元素樟蠕,而對于鏈表而言可能只是若干元素的指向發(fā)生變化而已糜值。

3.缺點,由于其在內(nèi)存空間中不一定是連續(xù)排列坯墨,所以訪問時候無法利用下標寂汇,而是必須從頭結(jié)點開始,逐次遍歷下一個節(jié)點直到尋找到目標捣染。所以當需要快速訪問對象時骄瓣,數(shù)組無疑更有優(yōu)勢。

5.Queue<T>

先進先出的線性表耍攘。在Queue這種數(shù)據(jù)結(jié)構(gòu)中榕栏,最先插入在元素將是最先被刪除;反之最后插入的元素將最后被刪除蕾各,

通過使用Enqueue和Dequeue這兩個方法來實現(xiàn)對 Queue的存取扒磁。

6.Stack<T>

后進先出的的線性表

默認容量為10。

使用pop和push來操作式曲。

7.Dictionary<K,T>

字典的實現(xiàn)方式就是哈希表的實現(xiàn)方式妨托,只不過 字典是類型安全的 ,也就是說當創(chuàng)建字典時吝羞,必須聲明key和item的類兰伤。

缺點:以空間換時間,通過更多的內(nèi)存開銷來滿足我們對速度的追求钧排。在創(chuàng)建字典時敦腔,我們可以傳入一個容量值,但實際使用的容量并非該值恨溜。而是使用 “不小于該值的最小質(zhì)數(shù)來作為它使用的實際容量符衔,最小是3

因此找前,我們面臨的情況就是,即便我們新建了一個空的字典判族,那么伴隨而來的是2個長度為3的數(shù)組躺盛。所以當處理的數(shù)據(jù)不多時,還是慎重使用字典為好五嫂,很多情況下使用數(shù)組也是可以接受的颗品。

8.Hashset

這個集合類包含不重復(fù)項的無序列表

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市沃缘,隨后出現(xiàn)的幾起案子躯枢,更是在濱河造成了極大的恐慌,老刑警劉巖槐臀,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锄蹂,死亡現(xiàn)場離奇詭異,居然都是意外死亡水慨,警方通過查閱死者的電腦和手機得糜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晰洒,“玉大人朝抖,你說我怎么就攤上這事〉海” “怎么了治宣?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長砌滞。 經(jīng)常有香客問我侮邀,道長,這世上最難降的妖魔是什么贝润? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任绊茧,我火速辦了婚禮,結(jié)果婚禮上打掘,老公的妹妹穿的比我還像新娘华畏。我一直安慰自己,他們只是感情好胧卤,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布唯绍。 她就那樣靜靜地躺著,像睡著了一般枝誊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惜纸,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天叶撒,我揣著相機與錄音绝骚,去河邊找鬼。 笑死祠够,一個胖子當著我的面吹牛压汪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播古瓤,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼止剖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了落君?” 一聲冷哼從身側(cè)響起穿香,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绎速,沒想到半個月后皮获,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡纹冤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年洒宝,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片萌京。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡雁歌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出知残,到底是詐尸還是另有隱情靠瞎,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布橡庞,位于F島的核電站较坛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏扒最。R本人自食惡果不足惜丑勤,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吧趣。 院中可真熱鬧法竞,春花似錦、人聲如沸强挫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽俯渤。三九已至呆细,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間八匠,已是汗流浹背絮爷。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工趴酣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人坑夯。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓岖寞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親柜蜈。 傳聞我的和親對象是個殘疾皇子仗谆,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 一.線性表 定義:零個或者多個元素的有限序列。也就是說它得滿足以下幾個條件:??①該序列的數(shù)據(jù)元素是有限的淑履。??②...
    Geeks_Liu閱讀 2,701評論 1 12
  • 前言:可能去過羅小黑博客的盆油們讀過這篇對于數(shù)據(jù)結(jié)構(gòu)的總結(jié)隶垮,但是羅小黑當時寫那篇文章的時候略有匆忙,所以今天進行了...
    半閑書屋半閑人閱讀 1,514評論 4 21
  • java筆記第一天 == 和 equals ==比較的比較的是兩個變量的值是否相等鳖谈,對于引用型變量表示的是兩個變量...
    jmychou閱讀 1,504評論 0 3
  • 文/俱馨 我喜歡一個男孩岁疼, 我喜歡他滄桑點綴著古銅色肌膚的男孩, 我...
    小溫和閱讀 260評論 7 9
  • 我在這里 但有時候我也不知道我在哪里 我明明在這一個遍地是人的角落呼吸 有時候也忘了自己不是一只鳥 要獨自飛行 如...
    柳橙芝閱讀 489評論 5 13