***数组和集合类的区别***
1、数组能容纳值类型,集合类则将它们的元素作为对象类型来接受。所以数组要声明容纳元素的类型,集合则不声明
2、数组具有固定大小,不能增大或缩小,集合则是动态的
3、数组可以是多维的,集合则是线性的,但是可以用集合中存储集合来模拟多维数组。
*********************
1.ArrayList
适合打散存储一个数组中的元素,比数组更加适合于增加删除元素
Remove(numbers)方法 :移除值为numbers的一个元素
RemoveAt(numbers)方法:移除索引为第numbers的元素
Add方法:ArrayList末尾增加一个元素
Insert(param1,param2)方法:ArrayList中间增加一个元素 param1插入的位置,param2插入的值
ArrayList.count 计算该集合的长度
eg1.
1 using System; 2 using System.Collections; 3 using System.Linq; 4 using System.Text; 5 6 namespace StepByStep1 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 ArrayList numbers = new ArrayList(); 13 foreach (int number in new int[12] { 10, 9, 8, 7,7,6, 5,10,4, 3, 2, 1 }) 14 { 15 numbers.Add(number); //Add number in the last place 16 } 17 numbers.Insert(numbers.Count - 1, 99); 18 numbers.Remove(7); 19 numbers.RemoveAt(6); 20 for (int i = 0; i < numbers.Count; i++) 21 { 22 int number = (int)numbers[i]; 23 Console.WriteLine(number); //使用for语句遍历时 要注意强制类型转换,numbers数组中的值类型为对象 24 } 25 foreach (int number in numbers) 26 { 27 Console.WriteLine(number); //使用foreach语句遍历时,不需要强制类型转换 28 } 29 Console.ReadKey(); 30 } 31 } 32 }
2.Queue
队列集合类,顾名思义,是一个FIFO机制的集合类
有Enqueue 入队列和Dequeue 出队列两种方法。入队在队尾进行操作,出队在队头进行操作
3.Stack
栈集合类,是LIFO,后进先出的集合类
有Push和Pop两种方法使用
4.Hashtable
哈希表,关联数组,可以通过特定的key来存取数据
eg2.
1 using System; 2 using System.Collections; 3 using System.Linq; 4 using System.Text; 5 6 namespace StepByStep1 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 Hashtable ages = new Hashtable(); 13 ages["John"] = 44; 14 ages["Diana"] = 45; 15 ages["James"] = 17; 16 ages["Maria"] = 26; 17 foreach (DictionaryEntry element in ages) 18 { 19 string name = (string)element.Key; 20 int age = (int)element.Value; 21 Console.WriteLine("Name:{0},Age:{1}", name, age); 22 } 23 Console.ReadKey(); 24 } 25 } 26 }
foreach时 要建立一个DictionaryEntry来存储Hashtable中的值。注意foreach中element中的key和value需要强制类型转换才能赋值给普通的值类型
5.SortedList
与Hashtable差不多,只是会按照key值进行排序
6.使用集合初始化器
ArrayList可以如下进行初始化
ArrayList numbers = new ArrayList(){10,9,8,7,6,5,4,3,2,1}; //只有支持Add方法的集合,才可以使用这个写法
HashTable可以如下进行初始化
HashTable ages = new HashTable(){{"John",44},{"Diana",45},{"James",17},{"Maria",26}};