您的位置:首页 > 其它

集合简单总结 ArrayList、List、Hashtable、Dictionary

2013-06-24 19:34 357 查看
============================ 集合综述 ==============================

1、什么是泛型: 泛型就是限制了操作类型,意思如下: 计算机中经常用到一些数据结构,如队列,链表等,而其中的元素以前一般这么定义:object a=new object(); 用object来表示元素带来一个严重的问题,每次拆箱、封箱占用了大量的计算机资源,导致程序性能低下, 而泛型就是在编译阶段就告诉编译器,数据结构中元素的种类,既然编译器知道了元素的种类, 自然就避免了拆箱、封箱的操作,从而显著提高c#程序的性能。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。ArrayList、Hashtable,不是泛型集合,所以添加到他们对象里面的元素都将隐式地向上强制转换为 Object, 则必须在将其添加到列表中时进行装箱操作,在检索时进行取消装箱操作,降低了相率List、Dictionary是泛型集合,就不会存在这种现象List 是 ArrayList 对应的泛型集合,他们相当于特殊的数组Dictionary 是 Hashtable对应的泛型集合,他们存储的是键值对

========================== ArrayList ============================

ArrayList 典型示例代码。。。。。。。。。。。。。。。。。。。。。。。。。 为 ArrayList 添加不同类型的元素,然后遍历这些值 static void Main(string[] args) { int []num=new int[]{12,4,56,87,8765}; ArrayList arrayList = new ArrayList(); arrayList.Add("老马"); arrayList.Add("老苏"); arrayList.Add(45.5); arrayList.Add(100); arrayList.Add(true); arrayList.Add(49.34m); arrayList.Add('女'); arrayList.Add(num); arrayList.AddRange(num); arrayList.Add(new Person("老牛", '女', 74)); for (int i = 0; i < arrayList.Count; i++) { Console.WriteLine(arrayList[i]); if (arrayList[i] is Person) //遍历其中的对象 { ((Person)arrayList[i]).Show(); Console.WriteLine(((Person)arrayList[i]).Name); Console.WriteLine(((Person)arrayList[i]).Age); Console.WriteLine(((Person)arrayList[i]).Gender); } if (arrayList[i] is int[]) //遍历其中的整形数组 { int []numbers=(int[])arrayList[i]; for (int j = 0; j < numbers.Length; j++) { Console.WriteLine(numbers[j]); } } } Console.ReadKey(); }ArrayList 常用方法、属性 总结。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。arrayList.Count;arrayList.AddRange(num); arrayList.Add(num); 注:两者的区别arrayList.Clear();bool result=arrayList.Contains('女');arrayList.Remove("牛牛"); 移除牛牛,如果该项不存在,不报错arrayList.RemoveAt(3); 移除下标为3的元素arrayList.Reverse(2,3); 顺序反转

=========================== Hashtable ================================
Hashtable 典型代码 1。。。。。。。。。。。。。。。。。。。。。。。
static void Main(string[] args) { ht.Add(4, "老苏"); ht.Add(9,"王二麻子"); ht.Add("2","打酱油的"); ht.Add(6,"赵六"); ht.Add(7,"老苏"); ht.Add(5,"哈哈"); ht.Add(8,"呵呵"); ht.Add("怎么的","把我也放进去"); foreach (var key in ht.Keys) //当键是不同数据类型时,用var表示 { Console.WriteLine(ht[key]); } Console.ReadKey(); }

Hashtable 典型代码 2 。。。。。。。。。。。。。。。。。。
static void Main(string[] args) { Hashtable ht = new Hashtable(); ht.Add("张三", 1000); ht.Add("李四", 1010); ht.Add("王五", 1012); foreach (string item in ht.Keys) //当键的类型一致时,就使用当前类型代替var { Console.WriteLine("key是{0},value是{1}",item,ht[item]); } Console.ReadKey(); }Hashtable 常用方法 。。。。。。。。。。。。。。。。。。Add 将带有指定键和值的元素添加到 Hashtable 中。 Clear 从 Hashtable 中移除所有元素。 Contains ContainsKey 两个方法一样 确定 Hashtable 是否包含特定键。 ContainsValue 确定 Hashtable 是否包含特定值。 Remove 从 Hashtable 中移除带有指定键的元素。

============================= List ==================================

List 典型示例代码 。。。。。。。。。。。。。。。。。。。。
class Program { static void Main(string[] args) { int[] nums = new int[] { 12,4,53,5,32}; List<int> list = new List<int>(); list.Add(1); for (int i = 0; i < 100; i++) { list.Add(i); } list.AddRange(nums); // 添加数组 for (int i = 0; i < list.Count; i++) //遍历 List { Console.WriteLine(list[i]); } Console.WriteLine(list.Max()); //聚集函数的应用 Console.WriteLine(list.Min()); Console.WriteLine(list.Sum()); Console.WriteLine(list.Average()); Console.ReadKey(); } }

========================== Dictionary ============================

static void Main(string[] args) { Dictionary<string, string> dic = new Dictionary<string, string>(); dic.Add("老牛", "吃草"); dic.Add("老马","吃嫩草"); dic.Add("老蒋", "吃肉"); 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(); }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐