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对这些数据进行管理。