Array陣列和List串列

 

    上次介紹了C#資料結構中的quene和stack,這次來介紹在C#資料結構中的array陣列和list串列。

    程式語言中,有時候需要存放好多個數值,而這些數值都是相同的類型,這時候一個一個變數宣告那實在是太花時間了,有沒有其他的方法呢?當然是有的,可以使用array陣列。

    今天如果我要輸入成績資料,我就可以宣告一個array陣列[成績],這個array陣列會使用連續記憶體,並且要設定array陣列要存放多少筆資料才能使用,可以存放多少筆資料這在程式上叫做這個陣列的大小,如果超出array陣列大小範圍的話就不能存放資料了,所以在設定array陣列大小時數字要注意不要太小。在宣告array以後,裡面的內容會先給一個預設值,不同的資料型態預設值不同,如果宣告array的資料型態是int整數的話,那麼預設值是0,所以即使陣列裡面的內容都還沒有設定數值,呼叫陣列裡面的第幾筆資料時都還是會有東西,只要沒有超出這個陣列大小的範圍就會顯示預設值,就好像1~100號成績都先預設為0,然後一筆一筆的去改每個人成績應該是多少。

    那可不可以我不要一開始設定我最多有多少筆資料,而是資料筆數可以增減呢?那可以使用list串列,使用list串列不需要使用連續記憶體,也不用告知要存放多少筆資料,可以增加和減少資料筆數,是一筆一筆增加資料,不像陣列告知有多少筆資料以後先給每一筆資料一個預設值,如果我只增加到第3筆成績資料,然後要取得第4筆成績資料在list中是不行的,而在陣列中我只設定到第3筆成績資料,然後要取得第4筆成績資料是可以的,你會得到預設值0。用list來輸入成績資料,就好像給你一個空白的成績表,上面都沒有內容,你要一筆一筆的把成績寫上去,也不需要先告知有多少筆成績資料,不必擔心不夠寫。使用list一個很方便的地方是移除一筆資料,後面資料就會自動往前移,就好像排隊時有一個人他不排了,後面的人就自動往前,array就沒有辦法這樣了。

 

整體來說,array和list有下面幾點不同:

1、array使用連續記憶體空間,list不需要使用連續記憶體空間。

    array就好像找一塊地搭帳篷,把帳篷搭在一起,而list則是搭帳篷但不搭在一起,會找好幾塊地搭帳篷。array在搭帳篷時地要找的夠大,不然帳篷太多就沒地方搭了,而list沒有這個問題,因為帳篷並沒有搭在一起,所以要再增加帳篷並不困難

2array的速度快,而list的速度慢

   array使用連續記憶體,帳篷都搭在一起,所以要走過所有帳篷會很快,而list不使用連續記憶體,帳篷沒有搭在一起,要走過所有帳篷當然就比較慢。

3array不能新增或刪除元素,但是list可以

   array的特性是一開始就宣告好多少筆資料,並且會給預設值,就好像找一塊地搭帳篷,已經告知園區我要搭多少個帳篷,園區已經把帳篷的位置一格格都畫好了,事先說好可以搭幾個帳篷,錢已經付好,如果要增加或是減少可搭帳篷的地方都不行,但是list不一樣,不需要宣告有多少筆資料,好比我在自己家的土地搭帳篷,所以我要增加一個搭帳篷的地方或是減少一個搭帳篷的地方都可以。

 

相關文章

Quene隊列和Stack堆疊

arrow
arrow
    創作者介紹
    創作者 波羅、希夏普2020 的頭像
    波羅、希夏普2020

    希夏普2020的程式天地

    波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()