【C#学习】ArrayList Hashtable List Dictionary 对比总结

时间:2022-09-03 17:56:23

        C#视频的时候,1105,1106里有讲到ArrayList  List Dictionary Hashtable四者的知识,

因为总是闹不太清它们四位少侠之间的恩怨关系,所以就总结出来啦。个人知识理解可能有失偏颇,

有误之处,各路朋友尽情指正!

 

ArrayList

功能定义:

array是数组的意思。Arraylist是动态数组,属于非泛型集合,可以灵活设置数组。动态的增加和减少元素。

特点:

1.可以放各种类型的数据,

2.并且可以不确定数组个数,add可以无限的添加。

因为Arraylist是非泛型集合,所以需要额外引入命名空间 using system.collection

 

举个栗子1arraylist简单应用

 

            int[] nums = new int[] { 1, 2, 3, 4, 5 };

ArrayList arraylist = new ArrayList();//创建新的ArrayList
arraylist.Add(10);//各种类型的数据
arraylist.Add(20);
arraylist.Add("王璐");
arraylist.Add('女');
arraylist.Add(true);
arraylist.Add(3.15m);
arraylist.Add(78.9);
arraylist.Add(nums);
arraylist.Add("雾霾快点消失吧");

for (int i = 0; i < arraylist.Count; i++)
{
if (arraylist[i] is int[])
{
int[] numbers = (int[])arraylist[i];
for (int j = 0; j < numbers.Length; j++)
{
Console.WriteLine(numbers[j]);
}

}
else
{
Console.WriteLine(arraylist[i]);
}
}
Console.ReadKey();




 

Hashtable

功能定义:

hashtable的中文名字叫哈希表,是根据关键码值(Key value)而直接进行访问的数据结构。

它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。

特点:

1.添加 add (两个值)键值对的形式。 key---键 value ---

2.无序性,输入的顺序,不一定是输出的顺序。

key找到了,value也就找到了,所以,key不能相同。

因为Hashtable是非泛型集合,所以需要额外引入命名空间 using system.collection

 

举个栗子2hashtable简单应用

 

                <span style="font-size:18px;">        Hashtable  ht =new Hashtable ();
ht .Add ("老崔","123");//键值对的形式存值,key----键 value-----值
ht.Add("小崔", 123);
ht .Add ("老王","老李");

foreach (object str in ht .Keys )
{
Console .WriteLine ("key{0},--------value{1}",str ,ht [str]);
}

Console .WriteLine ("添加成功了");
Console .ReadKey ();
</span>


运行结果:

【C#学习】ArrayList Hashtable  List Dictionary 对比总结

 

 

List

功能定义:

泛型集合,在一次操作中,从一个数组内提取多个值,同时为多个变量赋值。

特点:

1.list加 <>的形式,尖括号里放的是数据类型。

List明确了类型 如:  List<int>list=newList<int>();  List<string>list=new List<string>(); 

2.命名空间里已有usingSystem.Collections.Generic;无需再在命名空间里进行引用。

 

 

举个栗子3

list里随机添加10个不重复的数,求最大值,最小值,和,平均值

 

           <span style="font-size:18px;">    List <int >list=new List <int >();//实例化一个新的list
Random r = new Random();
int num = 0;
while (list.Count != 10) //10个随机数设定
{
num = r.Next(1, 100);
if(!list.Contains(num))//list不包含此数,就添加进来
{
list.Add(num);
}
}

Console.WriteLine("最大值:{0}",list.Max());
Console.WriteLine("最小值:{0}",list.Min());
Console.WriteLine("和为{0}",list.Sum());
Console.WriteLine("平均值为:{0}",list.Average());
Console.ReadKey();</span>

      


Dictionary

功能定义:

泛型集合,可以看做数组。基于键值的元素查找,用于更好的处理关联数据

特点:

1.<T key,Y vaule>key value键值对类型。

2.命名空间里已有usingSystem.Collections.Generic;无需再在命名空间里进行引用。

 

举个栗子4字典简单应用


               <span style="font-size:18px;">Dictionary<string, string> dic = newDictionary<string, string>();//尖括号的格式,key,value的对应形式

dic.Add("璐璐", "冰淇淋");
dic.Add ("老崔","蛋挞");
dic.Add ("王璐","蛋糕");
dic.Add ("苏","鸡翅");

foreach(string item in dic.Keys)//遍历字典
{
Console.WriteLine("key-----:{0},value---:{1}", item,dic[item]);
}
Console.ReadKey();</span>

          运行结果: 

【C#学习】ArrayList Hashtable  List Dictionary 对比总结


 

用一张图总结

         以上四种都属数组集合,ArraylistHashtable都是非泛型集合门派,ListDictionary

都是泛型集合门派。我把一些异同点整合,放进了一张图里,大家可以结合下图来和上面的知识

来理解这四位集合少侠~

个人知识理解可能有失偏颇,有误之处,各路朋友尽情指正!

【C#学习】ArrayList Hashtable  List Dictionary 对比总结