C 高階之路 5 C 陣列與集合

2022-02-06 11:16:25 字數 3497 閱讀 7816

c#高階之路——5. c#陣列與集合

基礎:

c#的資料組合分為陣列和集合兩種。

陣列一維陣列和多維陣列

集合普通集合:泛型集合,雜湊表,字典表,特殊集合等;

特殊集合:佇列和堆疊等

陣列一維陣列

int 陣列名 = new int[2]

方括號裡是陣列的長度

多維陣列

int 陣列2 = new int[2,3]

方括號裡數字表示2維陣列 每個維度的陣列長度是3

集合注意:集合需要在**開頭加 using system.collections;

普通集合

arraylist

不限制型別 不限定長度 不能更改索引值 只能是0123

list

限制資料型別 不限制長度 不能更改索引值

hashtable

沒有順序的概念 不限制型別 不限制長度 不限制索引值

dictionary

限制型別 限制索引值 不限制長度

注意:arraylist集合對資料型別沒有要求,因為arraylist集合中儲存的資料型別默為object型別,其它型別與object型別進行轉換時發生「拆箱裝箱」操作,

而list集合在宣告集合時確定了資料型別,所以list集合與arraylist集合相比相對安全。

高階:

arraylist

新增資料時不需要規定型別

arraylist 集合1=new arraylisr();

集合1.add("abc"); 新增字串

集合1.add(123);     新增數字

集合1.add(true);    新增布林型資料

集合1.remove(123)        移除資料

集合1.clear()         清空集合

集合1.contains("123")  檢查集合是否包含該資料

集合1.insert(0,123)        在索引值為0的位置插入123資料

arraylist示例

static void main(string args)

arraylist list = new arraylist();

list.add(true);

list.add(1);

list.add("張三");

list.addrange(new int );

list.addrange(list);

清除反轉

new string );//指定位置插入集合

if (list.contains("張三"))//判斷包含指定元素

console.writeline("已經有這個小哥哥啦~");

for (int i = 0; i < list.count; i++)

console.writeline(list[i]);

console.readkey();

泛型集合

list

限制資料型別 不限制長度 不能更改索引值

list《資料型別》 集合2 = new list 《資料型別》();

新建泛型集合

集合2.add("資料")

新增資料時需要規定型別

list示例

static void main(string args)

listlt = new list();

lt.add(1);

lt.add(2);

lt.add(3);

lt.addrange(new int );

for (int i = 0; i < lt.count; i++)

console.writeline(lt[i]);

console.readkey();

雜湊表hashtable

沒有順序的概念 不限制型別 不限制長度 不限制索引值

hashtale 集合3 = new hashtable();

集合3.add(索引值,資料)   

集合3.values集合的資料值 //配合遍歷使用輸出資料,否則輸出物件型別

集合3.keys 集合的索引值

新增資料時需要指定索引值

索引值和資料可以是任意資料型別

hashtable示例

static void main(string args)

hashtable hash = new hashtable();

hash.add(1, "張三");

hash.add(2, true);

hash.add(false, "錯誤的~");

foreach (var h in hash.keys)

console.writeline("鍵是,值是", h, hash[h]);

console.readkey();

字典表dictionary

限制型別限制索引值 不限制長度

dictionary《索引值資料型別,資料型別》 集合4 = new dictionary《索引值資料型別,資料型別》();集合4.add(索引值,資料)

新增的索引值和資料必須符合建表時規定的型別

static void main(string args)

dictionarydir = new dictionary();

dir.add(1, "張三");

dir.add(2, "李四");

dir[1] = "乾掉你";

foreach (keyvaluepairkv in dir)

console.writeline("鍵是,值是", kv.key, kv.value);

console.readkey();

佇列queue

先進先出

queue 佇列 = new queue(); 新建佇列

佇列.enqueue("資料")    新增資料

佇列.dequeue()       移除最先新增的資料

堆疊stack

先進後出

stack 堆疊 = new stack();      新建堆疊

堆疊.push("資料")  新增資料

堆疊.pop();      移除最後新增的資料

迴圈遍歷陣列

for (int i=0;i《陣列1.count;i++)       

console.write(

陣列1[i].tostring() + 陣列1[i].gettype().tostring();

陣列1.count 陣列長度

gettype()獲取資料型別

//這種迴圈方式只能用於索引值為數字的型別

foreach(var x in 陣列1)

console.write(

陣列1[i].tostring() + 陣列1[i].gettype().tostring();

//這個迴圈可以遍歷任何型別的陣列

參考:

5 C 集合與陣列

也就是陣列。具體表示方法是 資料型別 維數 陣列名 new 資料型別 陣列有很多的優點,比如說陣列在記憶體中是連續儲存的,所以它的索引速度是非常的快,而且賦值與修改元素也很簡單,比如 宣告乙個一維陣列 intarray1 new int 3 初始化乙個一維陣列 intarray1 new int 3...

5 c語言陣列

其中包括 冒泡 高精度加法 統計不相同的數字個數 陣列 陣列元素倒序輸出 go 1 include 234 5功能 冒泡67 6功能 高精度加法78 9void main 10 12int b m 13int c m 14char s m 1 15 int i 0 16 int n1 0 17 in...

5C 暴庫漏洞

的unicode是 5c,主要就是暴庫漏洞 那麼,我看到下面四種情況 1,直接暴庫,解決方法在conn.asp中加入on error resume next duoluo.webdream dlog 5cshowlog.asp?cat id 16 log id 444 2,不顯示任何資訊,原因已打入...