Array和ArrayList的異同點

2021-05-27 14:19:53 字數 2132 閱讀 6953

最近研究了一下c#中的array及arraylist類之間的異同,總結了以下幾點:

[array和arraylist的區別]

1. array型別的變數在宣告的同時必須進行例項化(至少得初始化陣列的大小),而arraylist可以只是先宣告。

如:int array = new array[3];

或 int array = ;

或 arraylist mylist = new arraylist();

這些都是合法的,而直接使用 int array;是不行的。

2.array只能儲存同構的物件,而arraylist可以儲存異構的物件

同構的物件是指型別相同的物件,若宣告為int的陣列就只能存放整形資料,string只能存放字元型資料,但宣告為object的陣列除外。

而arraylist可以存放任何不同型別的資料(因為它裡面存放的都是被裝箱了的object型物件,實際上arraylist內部就是使用"object _items;"這樣乙個私有欄位來封裝物件的)

3 在clr託管對中的存放方式

array是始終是連續存放的,而arraylist的存放不一定連續。

4 初始化大小

array物件的初始化必須只定指定大小,且建立後的陣列大小是固定的,

而arraylist的大小可以動態指定,其大小可以在初始化時指定,也可以不指定,也就是說該物件的空間可以任意增加。

5 array不能夠隨意新增和刪除其中的項,而arraylist可以在任意位置插入和刪除項。

[array和arraylist的相似點]

1 都具有索引(index),即可以通過index來直接獲取和修改任意項。

2 他們所建立的物件都放在託管堆中。

3 都能夠對自身進行列舉(因為都實現了ienumerable介面)。

[arraylist的一些特性]

1、 在研究arraylist我發現了乙個有趣的現象,arraylist的capacity屬性值會隨arraylist中的項的實際大小來發生改變,

如下**:

static

void

main(

string

args)

console.writeline(

"current capacity:"+

mylist.capacity);

console.readline();}

當size為2時,輸出結果中的"current capacity"為2,

當size為3或4時,"current capacity"為4,

當size為5~8時,"current capacity"為8,

當size為9~16時,"current capacity"為16,

...通過實驗可以得出乙個結論,那就是每當arraylist中的實際存在的物件數(arraylist.count)超過了自身的capacity閥值,那麼該閥值會自動翻倍。

(也可以改變mylist生成時的初始值來試試,但結論是一樣的)

2 、通過arraylist類的trimtoresize()方法可以將arraylist例項中的空項去除以壓縮體積。

如以下**:

static

void

main(

string

args)

console.writeline(

"actual capacity:"+

mylist.capacity);

mylist.trimtosize();

console.writeline(

"compressed capacity:"+

mylist.capacity);

console.readline();}

輸出:actual capacity:5

compressed capacity:3

3、 在c#2.0中,建議大家盡量使用范型版的arraylist,即system.collection.generics命名空間下的list,

這樣不但保證了型別安全,而且由於沒有了裝箱和拆箱的過程,從而提高了物件處理的效率。

Array 和 ArrayList 的區別

array 即陣列,宣告方式可以如下 int array new int 3 int array new int 3 int array int array new int 定義乙個 array 時,必須指定陣列的資料型別及陣列長度,即陣列中存放的元素個數固定並且型別相同。arraylist 是動態...

Array和ArrayList的區別

araay可以包含基本型別和物件型別,arraylist只能包含物件型別 array的大小是固定的,arraylist的大小是動態的 arraylist可以算是array的加強版 提供了新的功能 新增全部 addall 刪除全部 removeall 返回迭代器 iteratorall 使用場景 如果...

Array和ArrayList的區別

array和arraylist的區別 1.array型別的變數在宣告的同時必須進行例項化 至少得初始化陣列的大小 而arraylist可以只是先宣告。2.array只能儲存同構的物件,而arraylist可以儲存異構的物件。同構的物件是指型別相同的物件,若宣告為int的陣列就只能存放整形資料,str...