C 陣列和集合

2021-10-05 16:34:16 字數 1901 閱讀 7660

c#在儲存資料的時候,是需要先宣告乙個陣列的,當然還可以使用集合。那麼陣列與集合有什麼區別,為什麼有了陣列還需要集合呢?

定義:陣列是相同資料型別的元素按一定順序排列的集合。

優點:陣列在儲存資料的時候是連續儲存的,因此可以快速而容易地從頭到尾遍歷元素,可以快速的修改元素等等。

缺點:在宣告陣列的時候必須先宣告指定的長度。如果事先不知道儲存的大小,很容易會造成宣告的長度過長導致記憶體空間浪費,過短則造成資料的溢位。而且在兩個資料中間插入資料也是非常麻煩的,需要將插入位置後面的陣列全部移動位置。

定義:arraylist是命名空間system.collections下的一部分,它是使用大小可按需動態增加的陣列實現ilist介面。arraylist的預設初始容量為0,隨著元素新增到arraylist中,容量會根據需要通過重新分配自動增加。

優點:arraylist 可以根據使用大小按需動態增加,不用事先設定大小,可以隨意的新增資料,插入或移除某一範圍元素也比較方便。

缺點:因為arraylist 插入值的型別都是當做object 型別插入的,所以當呼叫資料的時候可能會出現型別不匹配的錯誤。

(1)陣列是一種非常有用的資料結構,但是陣列也具有很多的侷限性:首先,陣列元素的資料型別必須是相同的,其次,在建立陣列時必須確定元素個數陣列一旦建立,其大小就是固定的。想調整其大小或者增加新的元素都是比較困難的。特別是,當物件的個數未知,並且隨時可能要迴圈、新增和移除時,陣列會很不方便。

(2)集合是通過高度結構化的方式儲存任意物件的類,它可以把一組類似的物件組合在一起。與無法動態調整大小的陣列相比,集合不僅能隨意調整大小,而且為儲存或檢索某個物件提供了更多的方法。例如,由於object是所有資料型別的基類,因此任何型別的物件(包括任何值型別或引用型別資料)都可被組合到乙個object型別的集合中,並通過c#的foreach語句來訪問來訪問其中的每乙個物件。當然,對於乙個object型別的集合來說,可能需要單獨對個元素執行附加的處理,例如,裝箱、拆箱或轉換等。

另外:

1、陣列:同一型別,固定長度;集合:不同型別,不固定長度。

2、要使用集合,必須先引用命名空間:using system.collections;

3、集合的一些方法:

add()向集合中新增乙個元素;

remove()刪除集合中的乙個元素 ;

removeat(int i)刪除集合中索引值為i的元素 ;

reverse()反轉集合的元素 ;

sort()以從小到大的順序排列集合的元素 ;

clone()複製乙個集合。

4、hashtable:雜湊表,碼-值對(key-value),類似於字典(比陣列更強大)。雜湊表是經過優化的,訪問下標的物件先雜湊過。如果以任意型別鍵值訪問其中元素會快於其他集合。gethashcode()方法返回乙個int型資料,使用這個鍵的值生成該int型資料。雜湊表獲取這個值最後返回乙個索引,表示帶有給定雜湊的資料項在字典中儲存的位置。

5、單執行緒程式中推薦使用 dictionary, 有泛型優勢, 且讀取速度較快, 容量利用更充分。多執行緒程式中推薦使用 hashtable,預設的hashtable允許單執行緒寫入,多執行緒讀取,對 hashtable 進一步呼叫 synchronized() 方法可以獲得完全執行緒安全的型別。而 dictionary 非執行緒安全,必須人為使用 lock 語句進行保護,效率大減。

C 陣列和集合(摘)

陣列 array 宣告方式 資料型別 維數 陣列名 new 資料型別 namespace 二維陣列 int c new int 1,2 陣列集合 arraylist 宣告 arraylist a new arraylist using system.collections namespace 二維陣...

c 陣列類和集合類

在c 中,陣列是物件,必須進行例項化。eg 執行效果 system.collections 命名空間包含介面和類,這些介面和類定義各種物件 如列表 佇列 位陣列 雜湊表和字典 的集合。system.collections.generic 命名空間包含定義泛型集合的介面和類,泛型集合允許使用者建立強型...

C 陣列集合

一 陣列 1 變數是程式執行是在記憶體中儲存發生變化的容器 2 變數可以儲存單個資料,而陣列可以儲存多個變數,並且互不影響,和諧共處 3 陣列的特點 長度固定 型別相同 4 陣列用於儲存長度固定,型別相同變數的容器 二 陣列的分類 一維陣列 二維陣列 多維陣列 不規則陣列 三 陣列的應用 建立 賦值...