關於C 中的動態陣列ArrayList

2021-09-07 14:58:23 字數 3287 閱讀 3501

在c#中,如果需要陣列的長度和元素的個數隨著程式的執行不斷改變,就可以使用arraylist類,該類是乙個可以動態增減成員的陣列。

arraylist類實際上是array類的優化版本。

arraylist只能定義一維陣列,arrays可以定義多維陣列。

arraylist的下限始終為0,array可以定義自己的下限。

arraylist的元素都是object型別的,因此需要進行裝箱和拆箱操作,記憶體分配的代價很高,而array的元素通常是特定型別的。

arraylist的元素個數可以自動擴充套件,array的元素個數是固定的。

arraylist具有新增、刪除、插入、移動和複製等方法。

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using system.collections; //

匯入arraylist的命名空間

namespace

test

console.writeline();

console.writeline(

"實際包含的陣列元素個數:

" +alist.count);

console.writeline(

"目前能夠包含的陣列元素的最多個數:

"+alist.capacity);

alist.insert(

1, "

c#"); //

在指定的索引位置插入元素c#

console.write("

在索引值為1的位置插入:");

foreach (object obj in

alist)

console.writeline();

console.writeline(

"實際包含的陣列元素個數:

" +alist.count);

console.writeline(

"目前能夠包含的陣列元素的最多個數:

"+alist.capacity);

alist.add("。

");console.writeline(

"新增。");

console.writeline(

"目前能夠包含的陣列元素的最多個數:

"+alist.capacity);

alist.add(

"---

"); //

集合容量不夠時,會出現位數的變化

console.writeline("

新增---");

console.writeline(

"實際包含的陣列元素個數:

" +alist.count);

console.writeline(

"目前能夠包含的陣列元素的最多個數:

"+alist.capacity);

//用索引方式獲取集合元素值

console.writeline("

3號索引的:

" + alist[3

]);

//利用contains方法,查詢集合中是否包含「?」

console.writeline("

陣列中是否包含?:

" + alist.contains("?"

)); console.write(

"經過前面操作後的資料元素:");

foreach (object obj in

alist)

console.writeline();

console.writeline(

"實際包含的陣列元素個數:

" +alist.count);

console.writeline(

"目前能夠包含的陣列元素的最多個數:

"+alist.capacity);

alist.remove("。

"); //

移除集合中的「。」元素

alist.remove("

?"); //

移除集合中的「?」元素

console.writeline("

沒有包含?,減少1個元素,容量不變");

foreach (object obj in

alist)

console.writeline();

console.writeline(

"實際包含的陣列元素個數:

" +alist.count);

console.writeline(

"目前能夠包含的陣列元素的最多個數:

"+alist.capacity);

alist.removeat(

3); //

移除3號索引位的元素

console.write("

移除3號索引位的元素:");

foreach (object obj in

alist)

console.writeline();

console.writeline(

"實際包含的陣列元素個數:

" +alist.count);

console.writeline(

"目前能夠包含的陣列元素的最多個數:

"+alist.capacity);

alist.trimtosize();

//縮減容量

console.writeline("

目前能夠包含的陣列元素的最多個數:

"+alist.capacity);

alist.clear();

//清除arraylist中的所有元素

console.writeline("

清除arraylist中的所有元素後:");

console.writeline(

"實際包含的陣列元素個數:

" +alist.count);

console.writeline(

"目前能夠包含的陣列元素的最多個數:

"+alist.capacity);

alist.trimtosize();

//再次縮減容量

console.writeline("

再次縮減容量後,能夠包含的陣列元素的最多個數:

" +alist.capacity);

console.readline();}}

}

原部落格:

關於C 動態定義陣列

首先 為什麼需要動態定義陣列呢?這是因為,很多情況下,在預編譯過程階段,陣列的長度是不能預先知道的,必須在程式執行時動態的給出 但是問題是,c 要求定義陣列時,必須明確給定陣列的大小,要不然編譯通不過 如 int array 5 正確 int i 5 int array i 錯誤 因為在編譯階段,編...

C 中動態陣列 陣列引數

一 c 中的動態陣列 寫程式的時候,我在想動態陣列怎麼寫,new int,方括號中可以寫常量嗎,真是鬱悶,一些基本的知識都不記得,還是多練練吧。int pia new int 10 陣列的維數可以是任意的複雜表示式。delete pia 動態分配陣列時,陣列元素為類型別呼叫預設建構函式,內建型別的不...

C 中的動態多維陣列

前言 c 的new操作符是該語言乙個非常好的語法特性,然而實際使用中卻發現new操作符有不少限制,為突出的一點便是用new操作符分配多維陣列空間時,不能讓陣列的每一維都動態可變。本文將對此提出乙個簡單直觀的解決方案,在乙個實際問題的簡化模型中加以說明,並以此釋清許多初學者對c 中new操作符與多維陣...