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


        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>


运行结果:


 

 

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>

          运行结果: 



 

用一张图总结

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

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

来理解这四位集合少侠~

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


评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值