S2 深入.NET和C#编程 三:使用集合组织相关数据
三:使用集合组织相关数据
集合概念:
ArrayList:非常类似于数组,也有人称他为数组的列表.ArrayList可以动态维护,数组的容量是固定的 和数组类似,ArrayList中存储的是数据成为元素,ArrayList可以保存的元素就是ArrayList 的容量,其默认初始容量为0;可以通过索引访问ArrayList中的元素,索引从0开始
ArrayList是动态维护的
代码:
命名空间:
using System.Collections
//创建容量为0的ArrayList对象
ArrayList students =new ArrayList();
//创建容量为5的ArrayList对象
ArrayList teacher =new ArtrayList(5);
ArrayList 的属性及方法:
属性:
Count 获取ArrayList中的实际包含的元素数
方法:
Add: 将对象添加到ArrayList的结尾处
RemoveAt: 移除ArrayList指定索引处的元素
Remove: 从ArrayList中移除特定的对象
Clear: 从ArrayList中移除所有的元素
#region 01.集合使用 ArrayList list = new ArrayList(); //1.1 仍数据进去 逻辑思维 list.Add("小娃娃"); list.Add("大娃娃"); list.Add("中娃娃"); //1.2遍历集合 foreach (string item in list) //自动迭代 有一个迭代器 { Console.WriteLine("item"); } //1.3 删除数据: //方式1:下标 list.RemoveAt(0); //方式2:根据内容删除 list.Remove("小娃娃"); foreach (string item in list) { Console.WriteLine("item"); } //判断某个元素是否存在: bool flag = list.Contains("娃娃"); if (flag) { Console.WriteLine("存在"); } else { Console.WriteLine("不存在"); } #endregion
Hashtable:
数据通过键(Key)和值(Value)来组织的
命名空间:
using System.Collections
Hashtable的属性及方法:
属性:
Count:获取包含在Hashtable中键/值对的数目
Keys:获取包含在Hashtable中键的集合
Value:获取包含在Hashtable中值的集合
方法:
Add();将指定的键和值添加到Hashtable中
Remove();移除带有特定键的元素
clear();从Hashtable中移除所有的元素
#region 01.双列集合Hashtable(哈希表) Hashtable table = new Hashtable(); table.Add("ICBC", "工商银行"); table.Add("ABC", "农业银行"); table.Add("CBC", "中国建设银行"); //根据key获取value object bangName = table["ICBC"]; Console.WriteLine(bangName); Console.WriteLine("======================"); //遍历的手段 //foreach for 因为Hashtable 只有key没有索引,for通过下标取值 //Value 方式一:通过Key取去value; foreach (object key in table.Keys) { Console.WriteLine(key); //索引器 Console.WriteLine(table[key]); } //直接Value,如果我们能够拿到所有的集合 Console.WriteLine("======================"); foreach (object value in table.Values) { Console.WriteLine(value); } //key+value迭代,一次拿到的是key+value的组合 Console.WriteLine("======================"); foreach (DictionaryEntry item in table) { Console.WriteLine(""); Console.WriteLine(item.Key); Console.WriteLine(item.Value); } Console.ReadLine(); #endregion
泛型和泛型集合:
泛型集合:
语法:
List <T> 对象名 =new List <T>();
代码: //建立工程师员工集合 List <SE> engineers =new List <SE>(); //初始化三个工程师员工 SE Jack =new SE(); //属性赋值省略 SE joe =new SE(); //属性赋值省略 SE ema =new SE(); //属性赋值省略 //创建PM对象 PM pm =new PM(); //添加元素: engineers.Add(Jack ); engineers.Add(joe ); engineers.Add(ema ); //[engineers.Add(PM);(添加一个项目经理对象,编译立即报错)] 打印集合中的元素数目: Messagebox.show(string .Format("部门共包括{0}个工程师。",engineers .Count.Tostring())); 通过Key集合中的元素数目; SE engineers =engineers ["000"]; MessageBox.Show(engineers .SayHi()); 通过Key删除: engineers .Remove("000"); 打印集合中的元素数目: Messagebox.show(string .Format("部门共包括{0}个工程师。",engineers .Count.Tostring())); //遍历: foreach(SE se in engineers .Values ){ //遍历时无须类型转换 MessageBox。show(se.SayHi()); }
//#region 02.集合初始化器 //ArrayList list2 = new ArrayList()//集合初始化 //{ // new SE (){Name ="张靓颖",age=20},//对象初始化 // new SE() //}; //#endregion //#region 泛型集合先导课程 //List<SE> list = new List<SE>(); //SE se = new SE(); //se.Name= "比尔.盖茨"; //SE se2 =new SE(); //se2.Name = "李彦宏"; //list.Add(se); //list.Add(se2 ); //foreach (SE item in list) //{ // Console.WriteLine(item.Name); //} //Console.ReadLine(); //#endregion
List<T>和arrayList()的区别:
异:
ist<T> arrayList()
1:对所保存的元素进行类型的约束 可以增加任何类型
2:添加/读取值类型元素的无须拆箱和装箱 添加/读取值类型元素的需要拆箱和装箱
相同点:1:通过索引访问集合中的元素
2:添加的元素方法相同
3:删除元素的方法相同
Dictionary<k,V> 和Hashtable的区别:
不同点:
Dictionary<k,V> Hashtable
1:对所保存的元素进行约束 可以增加任何类型
2:添加/读取值类型元素的无须拆箱和装箱 添加/读取值类型元素的需要拆箱和装箱
相同点:
1:通过Key获取Value
2:添加的元素方法相同
3:删除元素的方法相同
4:遍历方法相同