1.泛型集合

数据结构是计算机存储、组织数据的方式,是指相互之间存在一种或多种特定关系的数据元素的集合。

C#中提供了一些可存储任意类型的对象且长度可变的类,这样的类被称为集合 

集合也是一种数据结构,并分为以下两种:泛型集合、非泛型集合。

泛型集合只能存储固定类型的对象。

若要使用,需以下命名空间(默认自带):

System.Collections.Generic;

 

2.List泛型集合

List<T>是C#中内置的一个类,与数组相似,但其封装了多种方法方便用户更改其中数据。且在实例化List对象时无需指定长度。

List<T>尖括号中的T表示任何数据类型,也就是说,无论int还是float都可以使用List,但每一个List对象里面的数据类型是一致的。

实例化:(以int型为例)

List<int> userLevel = new List<int>();

增添数据:(在队尾增添,括号中的参数即数据本身)

userLevel.Add(15);

取用和修改数据:(与正常数组一样,直接调用索引)

userLevel[0] = 20;
Console.WriteLine(userLevel[0]);

与数组一样,List的索引也是从0开始,若要取得List当前的长度:

Console.WriteLine(userLevel.Count);

不能通过赋值的方式来添加数据!

删除数据:(RemoveAt括号中的参数为索引,)

userLevel.RemoveAt(0);

还有一种与上述方法等价的:

userLevel.Remove(userLevel[0]);

某数据被删后,该数据之后的所有数据的索引都会向前提一位

泛型集合与类 

任何数据类型都可以使用泛型集合,包括用户自定义的类。

例如,我定义了一个Userinformation的类用于存储用户信息,里面有用户id和年龄两个信息,那么初始化和添加:

List<UserInformation> user = new List<UserInformation>();
UserInformation user1 = new UserInformation("0001", 24);
user.Add(user1);

user.Add(new UserInformation("0002", 15));

实际上,添加可以简写成最后那一行代码的形式。

 

3.Dictionary

Dictionary<T,T>

该集合是一种“键值对”的集合,每个数据由两部分构成:键和值。

每个数据的唯一标识为键(相当于索引),因此同一个集合中不能有相同的键。

键的数据类型可以不为int,值的类型更可以多样化,但与List一样,一个集合内键的类型要统一,值的类型也要统一。

尖括号中前一个T表示键的类型,后一个表示值的类型。

创建:

Dictionary<string, string> dic = new Dictionary<string, string>();

添加、删除、修改和调用:

dic.Add("Protoss", "神族");  //前一个参数为key,后一个参数为value
dic.Add("Zerg","虫族");
dic.Add("Terran", "人族");
//Timba,删了!
dic.Remove("Terran");
dic["Zerg"] = "虫族大法好";
Console.WriteLine(dic["Zerg"]);
Console.WriteLine(dic.Count);

PS:经过尝试发现,可以通过赋值的方式添加数据。例如,在文中remove人族后,可以直接dic["Terran"]="人族"将这个数据添加进去。

因为Dictionary的索引是键,无法直接用for遍历,所以:

foreach(var item in dic.Keys)
{
    Console.WriteLine(item+"-"+dic[item]);
}

var代表不定类型,dic.keys是键的集合。

为了在操作中不出现同键,有以下方法可以使用:

Dictionary.ContainsKey(Key)和Dictionary.ContainsValue(Value),均返回bool。

日常生活中存在大量“键值对”型的数据,如通讯录(人名—手机号),网站(站名——网址)等等,这个时候就可以使用Dictionary对这些数据进行管理。