Array List和ArrayList的區別與

2021-08-09 10:46:00 字數 1960 閱讀 9346

定義: 

public abstract class array:icloneable, ilist, icollection, ienumerable, istructuralcomparable, istructuraequatable

陣列在記憶體中是連續儲存的,所以它的索引速度是非常的快,而且賦值與修改元素也很簡單

string s = new string[3];

//賦值

s [0] = "a";

s [1] = "b";

s [2] = "c";

//修改

s [0] = "a1";

陣列在倆資料中插入資料是很麻煩的,還有我們在宣告陣列的時候,必須同時指明陣列的長度,陣列的長度過長,會造成記憶體浪費,陣列和長度過短,會造成資料溢位的錯誤。

arraylist是.net framework提供的用於資料儲存和檢索的專用類,它是命名空間system.collections下的一部分。它的大小是按照其中儲存的資料來動態擴充與收縮的。所以,我們在宣告arraylist物件時並不需要指定它的長度。arraylist繼承了ilist介面,所以它可以很方便的進行資料的新增,插入和移除.比如:

arraylist list = new arraylist ();

//新增資料

list.add ("abc");

list.add (123);

//修改資料

list [2] = 345;

//移除資料

list.removeat (0);

//插入資料

list.insert (0, "hello world");

arraylist存在不安全型別與裝箱拆箱的缺點:

在list中,我們不僅插入了字串"abc",而且又插入了數字123。這樣在arraylist中插入不同型別的資料是允許的。因為arraylist會把所有插入其中的資料都當作為object型別來處理。這樣,在我們使用arraylist中的資料來處理問題的時候,很可能會報型別不匹配的錯誤,也就是說arraylist不是型別安全的。既使我們保證在插入資料的時候都很小心,都有插入了同一型別的資料,但在使用的時候,我們也需要將它們轉化為對應的原型別來處理。這就存在了裝箱與拆箱的操作,會帶來很大的效能損耗。

list類是arraylist類的泛型等效類(arraylist繼承了list介面)。它的大部分用法都與arraylist相似,因為list類也繼承了ilist介面。最關鍵的區別在於,在宣告list集合時,我們同時需要為其宣告list集合內資料的物件型別。

listlist = new list();

//新增資料

list.add(123);

//修改資料

list[0] = 345;

//移除資料

list.removeat(0);

arraylist list1 = new arraylist ();
這句建立了乙個arraylist的物件後把上溯到了list。此時list是乙個list物件了,有些arraylist有但是list沒有的屬性和方法,它就不能再用了。而arraylist list=new arraylist();建立一物件則保留了arraylist的所有屬性。

問題就在於list有多個實現類,如linkedlist或者vector等等,現在你用的是arraylist,也許哪一天你需要換成其它的實現類呢?,這時你只要改變這一行就行了:list list = new linkedlist(); 其它使用了list地方的**根本不需要改動。假設你開始用 arraylist list = new arraylist(), 這下你有的改了,特別是如果你使用了 arraylist特有的方法和屬性。如果沒有特別需求的話,最好使用list list = new linkedlist(); 便於程式**的重構. 這就是面向介面程式設計的好處。

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...