初識c 泛型集合,雜湊表,堆疊,佇列,索引器

2021-08-08 18:51:41 字數 4771 閱讀 9141



arraylist是線性資料結構----對應的泛型線性結構list

泛型集合list

為什麼使用泛型?

1.泛型集合比非泛型集合對於資料這一塊來說,是安全的.沒有髒資料

2.在一定資料量的前提下,泛型比非泛型寫入資料和讀取資料要快的多

3.泛型集合處理資料快的原因是少了裝箱和拆箱的操作

arraylist al = new arraylist();

al.add(1);

al.add(2);

al.add("3");

foreach (var item in al)

//初始化list集合,限定內部資料僅為int

listlist = new list();

list.add(1);

list.add(2);

"3");  錯誤,資料型別不匹配

int arrs = ;

//char chars = ;

list.addrange(arrs);

console.writeline(list.count);

range

//雜湊表(字典)key--value

//hashtable

dictionary

//key唯一,key不能對應多個value,但是value可以對應多個key

student s1 = new student("劉德華1", 9527, 95.8f);

student s2 = new student("劉德華2", 9527, 95.8f);

student s3 = new student("劉德華3", 9527, 95.8f);

hashtable ht = new hashtable();

//新增key-value

ht.add(1, s1);

ht.add(2, s2);

ht.add(3, s3);

ht.add(4, s3);

//遍歷所有的鍵(1)

foreach (var item in ht.keys)

//遍歷所有的值(2)

foreach (var item in ht.values)

//遍歷3全部key-value

dictionaryentry

//字典實體-->內部的內容

foreach (dictionaryentry item in ht)

:",key,values.stu_name);

}//遍歷4

idictionaryenumerator ide = ht.getenumerator();

while (ide.movenext())

//指定乙個key移除key-value

ht.remove(3);

//判斷雜湊表中是否存在某個key,存在返回true

if (ht.containskey(3))

//清除全部的key-value

ht.clear();

student s1 = new student("劉德華1", 9527, 95.8f);

student s2 = new student("劉德華1", 9526, 99.8f);

student s3 = new student("劉德華3", 9529, 92.8f);

listlist = new list();

list.add(s1);

list.add(s2);

list.add(s3);

list.remove(s1);

foreach (student s in list)

//對於sort來說返回-1位置不會發生變化

//返回1,交換順序

list.sort();

list.reverse();

int i = s1.compareto(s2);

int i2 = s2.compareto(s3);

console.writeline(i);

console.writeline(i2);

string stu1 = "1";   //49

string stu2 = "2";   //50

console.writeline(stu1.compareto(stu2));

//1  前面的比後面的大

//-1 前面的比後面的小

//0int i1 = s1.compareto(s2);

int i2 = s2.compareto(s3);

console.writeline(i1);

console.writeline(i2);

foreach (student stu in list)

arraylist al = new arraylist();

text t1 = new text("1");

text t2 = new text("1");

al.add(t1);

al.add(t2);

al.remove(t1);

foreach (text tt in al)

//stack--堆疊

stack

int a = 10;

int b = 20;

int c = 30;

stack sk = new stack();

sk.push("a");

sk.push("b");

sk.push("c");//棧頂資料

//棧的長度

console.writeline(sk.count);     

string str = (string)sk.pop();  //取得棧頂資料,並把棧頂資料刪除

console.writeline(sk.count);

//返回不移除

console.writeline(sk.peek());//取得棧頂資料,不刪除

//判斷棧內是否存在某個元素

if (sk.contains("c"))

//清空棧

sk.clear();

//當空棧的時候,不要進行pop和peek的操作,會出現異常

sk.getenumerator()

foreach (var item in sk)

//佇列queue

queue que = new queue();

//進隊

que.enqueue("a");

que.enqueue("b");

que.enqueue("c");

//出隊,移除並返回隊頭元素

console.writeline(que.dequeue());

//返回隊頭元素不移除

console.writeline(que.peek());

//判斷佇列是否包含某個元素

console.writeline(que.contains("a"));

object objs = que.toarray();

//如何將object陣列轉換到arraylist

arraylist al = new arraylist(objs);

console.writeline(al.count);

console.writeline(al[0]);

//整型陣列

int arr = ;

arr[0] = 22;

arr[1] = 33;

//索引器

classindex ci = new classindex();

ci[0] = 100;

ci[1] = 200;

ci[2] = 222;

ci[3] = 300;

ci[4] = 4;

ci[9] = 9;

for (int i = 0; i < ci.length; i++)

console.writeline(ci[10]);

//foreach (int i in ci)

// /**

*  索引器

*  作用:讓物件具有快速訪問元素的能力

*  *  索引器和陣列的區別:

*  1.索引器的索引型別(index)不限定為整數

*  2.索引器支援方法過載

*  3.索引器實際上跟屬性是一樣的,也屬於特殊的方法

*    同樣具備set和get訪問器

*  *  索引器和屬性的區別:

*  1.索引器是以關鍵字this來標識的,屬性數任意字元,

*    首字母大寫

*  2.索引器可以過載,屬性不能

*  3.索引器是可以有引數的,但是屬性沒有

*  4.索引器不能用static修飾,但是屬性可以

*/namespace _14classcode

}//定義索引器

public int this [int index]

}get

return intarray[index];}}

}}佇列和棧的應用:判斷乙個字串是否是回文字串

string str =console.readline();

starks=new stark();

queueque=new queue();

for(int i;is.push(str[i]);

que.enqueue(str[i]);

}bool ishui=true;

while(s.count>0)

}console.writeline("是否是回文字串"+ishui);

C 集合 泛型集合

非泛型集合的類和介面位於system.collections命名空間。泛型集合的類和介面位於system.collections.generic命名空間。普通集合 arraylist 值 有序不唯一 hashtable key 必須唯一 可為空 不能為null value 可重複 能為空和null ...

C 泛型 泛型集合Dictionary

在system.collections.generic命名空間中,與arraylist相對應的泛型集合是list,與hashtable相對應的泛型集合是dictionary,其儲存資料的方式與雜湊表相似,通過鍵 值來儲存元素,並具有泛型的全部特徵,編譯時檢查型別約束,讀取時無須型別轉換。本儲存的例子...

C 泛型集合

集合是oop中的乙個重要概念,c 中對集合的全面支援更是該語言的精華之一。為什麼要用泛型集合?在c 2.0之前,主要可以通過兩種方式實現集合 a.使用arraylist 直接將物件放入arraylist,操作直觀,但由於集合中的項是object型別,因此每次使用都必須進行繁瑣的型別轉換。b.使用自定...