一:ArrayList集合
1. 必须声明命名空间 usingsystem.collection
2. 可用与存储不同类型的数据
3. 读取数据时大都需要里氏转换
4. 常用方法
Add:添加数据
Insert:插入数据
Remove:删除索引对应的数据
Removerage:(index,length)从某个索引开始,移除长度为length的数据
Clear:清除集合,此时集合中不再有元素
Sort:排序
Reverse:反转
Count:集合的长度
【注意】
add():添加数据,如何添加的是个数组,则数组会作为一个元素添加到集合中
AddRange():如果添加的是个数组,则集合会添加与数组相同个数的元素
6.可以初始化容量,但实际添加数值时,可以超出这个范围
7.代码演示:
class Program { static void Main(string[] args) { Person p=new Person("小王"); int[]num=new int[]{1,2,3,4,5}; ArrayList myAL=new ArrayList(); myAL.Add(1); //添加int类型 myAL.Add(2); myAL.Add("世界");//添加string类型 myAL.Add(p); //添加类 myAL.AddRange(num);//添加数组 myAL.Insert(3, "漂亮");//在索引3的前面加数据 myAL.Remove(1);//从集合中移除指定对象1在集合中的第一个匹配项 myAL.RemoveRange(1, 3);//从索引为1的位置开始,删除3个数据 foreach(object value in myAL) { Console.WriteLine(value); } //myAL.Clear(); Console.WriteLine("集合中元素的个数为{0}",myAL.Count); Console.Read(); } } public class Person { private string name; public Person(string name) { this.name=name; } }
二:List泛型集合
1.不需要导入命名空间
2.存储相同指定类型的数据
3.常用方法
方法和ArrayList集合的方法大致相同,但下面是List独有的方法:
如果数据类型是int类型,可直接调用List本身具有的方法求最大值马max()、最小值min(),和sum()、平均值
4.代码演示:
int[]num=new int[]{1,2,3,4,5}; List<int> mylist = new List<int>(); foreach(int n in num) { mylist.Add(n); } Console.WriteLine("最大值为{0}",mylist.Max()); Console.WriteLine("最小值为{0}",mylist.Min()); Console.WriteLine("和为{0}",mylist.Sum()); Console.WriteLine("平均值为{0}",mylist.Average()); Console.Read();
三:哈希表
1.使用前必须导入命名空间 using system.collections
2.键和值的数据类型不受限制
3.以键值对的形式存储,读时也是以键值对的形式读,key不能相同,key存储时也是无序的,
4.常用方法
Add(key,value):以键值对的形式添加
Remove(key):移除对应键的value
contains():判断是否存在该键
5.哈希表常用来干什么那,文字转换,下面是简繁体字转换class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); //添加的数据类型无限制 ht.Add(1,"世界"); ht.Add(2, "地球"); ht.Add("one",1); ht.Add("two",2); ht.Add(new Person("小刘"),"帅气"); ht.Remove("one");//移除对应键的值 bool result=ht.Contains("one");//判断哈希表中是否有指定的键 Console.WriteLine(result); //显示的顺序不一定是你写入的顺序 foreach (object myht in ht.Values) { Console.WriteLine(myht); } Console.Read(); } } class Person { private string name; public Person(string name) { this.name = name; } }
class Program { //简体字 private const String Jian = "啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安"; //繁体字 private const String HXW = "啊阿埃挨哎唉哀皚癌藹矮艾礙愛隘鞍氨咹"; static void Main(string[] args) { //文章 //string text = "传智播客有个帅哥叫小杨,小杨很帅,很纯洁,是个著名的大帅哥。帅到什么程度呢,他每次讲课,总是引起一堆怀春少女或者半老徐娘的围观,搞得网络不畅通。后来他都不敢讲公开课了。后来就偷偷的在代码教育的论坛注册个号码讲公开课,可是一旦被发现,也是引来尖叫一片。那些女性朋友们觉得只是尖叫难以吸引小杨的注意,就想了一个办法——一天二十四小时的加小杨的QQ"; string text = "世界这么大,幸好还有你,爱看看"; Hashtable ht = new Hashtable(); //将简体字添加到哈希表中 for (int i = 0; i < text.Length;i++ ) { ht.Add(Jian[i],HXW[i]); } //将简体字转换成繁体字 for(int i=0;i<text.Length;i++) { if (ht.ContainsKey(text[i])) { Console.Write(ht[text[i]]); } else { Console.Write(text[i]); } } Console.Read(); } }
四:Dictory字典
1.不用导入命名空间
2.键的存储顺序是无序的
3.键和值的数据类型固定,需要自己指定
4.常用方法:
方法和HashTable一样,
5.代码演示
【总结】
//键的类型为int,值的类型为string Dictionary<int, string> d = new Dictionary<int, string>(); d.Add(1,"世界"); d.Add(2,"真大"); foreach (object myd in d.Values) { Console.Write(myd); } Console.Read();
1.ArrayList和HashTable使用前都需要导入命名空间,List和Dictionary不需导入命名空间
2.都可用foreach循环,但用foreach循环,一旦开始循环,就无法停止了
3.方法都差不多,但List特有max,min,sum,average方法,不用自己在写代码去求了