区别和联系
先用两张图帮助大家理解一下他们四者的区别和联系
小杨老师画的图
Arraylist和List泛型集合
从上图可以看出,一个数组只能存储一种类型的数据,而且数据的个数是确定的,在程序设计当中往往不能满足我们的要求,这时候就需用到集合了。arraylist是非泛型集合,它的数据类型为object,可以存储任意类型的数据,同时它是可变长的,使用时需要引入命名空间using System.Collections,这就克服了数组的一些缺点。
当然,我们要是只需要存储一种数据类型,同时不限数据存储的个数,用list<T>泛型集合就可以了,T代表要存储的数据类型,不论用哪种集合,都需要先进行实例化,下面分别举例介绍:
List<string> ListString=new List<string>(); 存储string字符串类型的
List<int> ListInt=new List<int>(); 存储int整型的
如果用到多种数据类型的话,就是用arraylist泛型集合:
ArrayList arraylist = new ArrayList();
arraylist方法详见:
https://blog.csdn.net/wtt15100/article/details/104460377
List集合:
//随机的往这个list集合中添加10个数据,数据不能重复,求和,求最大值,求最小值,求平均值
List<int> listint = new List<int>(); //创建一个list集合
Random r = new Random();
int num;
while (listint.Count!=10)
{
num = r.Next(1, 100); //产生随机数
if (!listint.Contains(num)) //如果list当中不包含这个数
{
listint.Add(num); //添加到list当中
}
}
Console.WriteLine("总和为:{0}",listint.Sum());
Console.WriteLine("最大值为:{0}",listint.Max());
Console.WriteLine("最小值为{0}",listint.Min());
Console.WriteLine("平均值为{0}",listint.Average());
Console.ReadKey();
Hashtable哈希表和Dictionary字典
Hashtable和字典都是以键值对的形式存储,根据键名找到对应的值,键名不可以重复,使用的时候引入命名空间using System.Collections。Dictionary字典也是以键值对的形式存在,与哈希表不同的是,哈希表存储的数据类型没有限制,需要引入命名空间,字典指定两种存储的类型,不需要引入命名空间。
给大家举个例子,不知道大家没有没有用过英汉词典,英汉词典中一个英文单词后面对应着它的汉语意思,有的时候这个单词的意思可能不止有一个。比如现在我要查patient这个单词,字典那么厚,一页页的翻肯定是不可能的,这时候我们只需要在目录中找到P,在P下面对应找到patient(键)这个单词就可以了,翻到那一页后发现有两个意思(两个值),一个做形容词是有耐心的,一个做名词是病人,患者的意思。
在这里,哈希表就像一个词典一样,里面以键值对的形式进行存值,patient叫做键,查出来的中文意思叫做Value值,像英汉词典一样,尽管value值(汉语意思)不止一个,但是key键(英文单词)是唯一的,不可以重复的。
哈希表:
Hashtable ht = new Hashtable(); //实例化一个哈希表
ht.Add("你好", "Hello"); //向哈希表中添加一个键值
//遍历哈希表用foreach
foreach (var key in ht.Keys)
{
Console.WriteLine("key:{0}",key);
Console.WriteLine("value:{0}",ht[key]);
}
字典:
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("张三", "李三");
dic.Add("张四", "李四");
Dictionary<string, int> dict = new Dictionary<string, int>();
dict.Add("你好", 1);
注意
ararylist因为它存储的是object类型的数据,所以在赋值时需要将数据类型转换为object类型,也叫装箱操作,同时从arraylist当中取值时,要将object类型转换为其本身的数据类型,就是拆箱操作。但是在list<T>泛型集合中实例化时就规定了只能存储一种数据类型,所以不需要进行数据类型之间的转换,它的效率和性能都高于arraylist集合。哈希表和字典也是一样的,哈希表存储的类型是object,存值和取值时也会发生装箱和拆箱操作,所以,字典的效率和性能高于哈希表。
什么叫做装箱和拆箱,点一点下面就知道到啦~~~~
https://blog.csdn.net/wtt15100/article/details/104466564