首页 > 代码库 > ASP.NET集合类(转)

ASP.NET集合类(转)

  1 (一)ArrayList类:表示大小可按需动态增加的数组
  2 protected void Page_Load(object sender, EventArgs e)
  3 {
  4     ArrayList al = new ArrayList();
  5     al.Add(100);//单个添加 
  6     foreach (int num in new int[4]{ 1, 2, 3, 4 })
  7     {
  8         al.Add(num);//集体添加方法一
  9     }
 10     int[] num2 = new int[2] { 5, 6 };
 11     al.AddRange(num2);//集体添加方法二
 12     al.Remove(3);//移除值为3的
 13     al.RemoveAt(3);//移除第3个
 14 
 15     ArrayList al2 = new ArrayList(al.GetRange(1, 3));
 16     //新ArrayList只取旧ArrayList一部份 
 17     Response.Write("foreach遍历:<br/>");
 18     foreach (int i in al2)//不要强制转换
 19     {
 20         Response.Write(i+"<br/>");//遍历方法一 
 21     }
 22     Response.Write("for遍历:<br/>");
 23     for (int i = 0; i < al2.Count; i++)//数组是length 
 24     {
 25        int n = (int)al2[i];//一定要强制转换 
 26         Response.Write(n+"<br/>");//遍历方法二 
 27     }
 28 }
 29 (二)Queue类(队列):表示对象的先进先出集合。
 30 protected void Page_Load(object sender, EventArgs e)
 31 {
 32     Queue qu = new Queue();
 33     foreach (int i in new int[4] { 1, 2, 3, 4 })
 34     {
 35        qu.Enqueue(i);//入队    
 36     }
 37     Response.Write("遍历:<br/>");
 38     foreach (int i in qu)
 39     {
 40         Response.Write(i + "<br/>");//遍历 
 41 }
 42 
 43     Response.Write("出队:<br/>");
 44     //移除并返回队首元素
 45     Response.Write(qu.Peek());
 46     
 47     //返回队首元素 
 48     Response.Write(qu.Peek());
 49 }
 50 (三)Stack类(栈):表示对象的先后进先出集合。Push入栈方法,Pop出栈方法。
 51 protected void Page_Load(object sender, EventArgs e)
 52 {
 53     Stack sk = new Stack();
 54     foreach (int i in new int[4] { 1, 2, 3, 4 })
 55     {
 56         sk.Push(i);//入栈 
 57     }
 58     Response.Write("栈的遍历:<br/>");
 59     foreach (int i in sk)
 60     {
 61         Response.Write(i+"<br/>");//遍历 
 62     }
 63 
 64     Response.Write("出栈:<br/>");
 65     Response.Write(sk.Pop() + "<br/>");//遍历 
 66 Response.Write(sk.Peek() + "<br/>");//遍历 
 67 }
 68 (四)Hashtable哈希表:键/值对的集合,这些键/值对根据键的哈希代码进行组织。
 69 protected void Page_Load(object sender, EventArgs e)
 70 {
 71     Hashtable ht = new Hashtable();//创建一个Hashtable实例 
 72     ht.Add("E", "4");//添加key/value键值对 
 73     ht.Add("A", "1");
 74     ht.Add("C", "3");
 75     ht.Add("B", "2");
 76     Response.Write("哈希表的遍历:<br/>");
 77     ArrayList akeys = new ArrayList(ht.Keys);
 78     akeys.Sort(); //按字母顺序进行排序 
 79     foreach (string st in akeys)
 80     {
 81         Response.Write(st + ":");
 82         Response.Write(ht[st]+"<br/>");//排序后输出 
 83     }
 84 
 85     string s = (string)ht["A"];
 86     Response.Write("s为:"+s+"<br/>");
 87     if (ht.Contains("E")) //是否包含特定键,返回true/false 
 88      {
 89          Response.Write("the E key:exist<br/>");
 90      }
 91      ht.Remove("C");//移除一个key/value键值对 
 92      Response.Write(ht["A"]+"<br/>");//此处输出a 
 93      ht.Clear();//移除所有元素 
 94      Response.Write(ht["A"]+"<br/>"); //此处将不会有任何输出
 95 }
 96 (五)SortedList类:表示键/值(key / value)对的集合,与哈希表类似,区别在于SortedList中的键(key)数组是排好序的。
 97 protected void Page_Load(object sender, EventArgs e)
 98 {
 99     SortedList sl = new SortedList();
100     sl["c"] = 41;
101     sl["a"] = 42;
102     sl["d"] = 11;
103     sl["b"] = 13;
104     ArrayList arr = new ArrayList(sl.Keys);
105     foreach (string s in arr)
106     {
107         Response.Write(s + ":");
108         Response.Write(sl[s]+"<br/>");
109     }
110 }
111 (六)Dictionary泛型集合:
112     泛型最常见的用途是泛型集合,命名空间using System.Collections.Generic;中包含了一些基于泛型的集合类,使用泛型集合类可以提高类型安全性和性能,还避免了非泛型集合的重复装箱和拆箱过程。很多非泛型集合类都有对应的泛型集合类,如:
113     非泛型集合类 ~ 泛型集合类
114     ArrayList    List<T>
115     Hashtable    Dictionary<T>
116     Queue            Queue<T>
117     Stack           Stack<T>
118     SortedList  SortedList<T>
119     如果我们操纵的数据类型相对确定的话,用Dictionary<TKey, TValue>集合类来存储数据会更方便。 
120 protected void Page_Load(object sender, EventArgs e)
121 {
122     Dictionary<string, string> myDic = new Dictionary<string, string>();
123     myDic.Add("aaa", "111");
124     myDic.Add("bbb", "222");
125     myDic.Add("ccc", "333");
126     myDic.Add("ddd", "444");
127     //如果添加已经存在的键,add方法会抛出异常 
128     try
129     {
130          myDic.Add("ddd", "ddd");
131     }
132     catch (ArgumentException ex)
133     {
134         Response.Write("此键已经存在:" + ex.Message+"<br/>");
135     }
136     //解决add()异常的方法是用ContainsKey()方法来判断键是否存在 
137     if (!myDic.ContainsKey("ddd"))
138     {
139         myDic.Add("ddd", "ddd");
140     }
141     else
142     {
143         Response.Write("此键已经存在!"+"<br/>");
144     }
145 
146     //而使用索引器来负值时,如果建已经存在
147     //就会修改已有的键的键值,而不会抛出异常 
148     myDic["ddd"] = "555";
149     myDic["eee"] = "666";
150 
151     //使用索引器来取值时,如果键不存在就会引发异常 
152     try
153     {
154         Response.Write("不存在的键\"fff\"的键值为:" + myDic["fff"]+"<br/>");
155     }
156     catch (KeyNotFoundException ex)
157     {
158         Response.Write("没有找到键引发异常:" + ex.Message + "<br/>");
159     }
160 //解决上面的异常的方法是使用ContarnsKey() 来判断时候存            
161 //在键,如果经常要取健值得化最好用 
162     //TryGetValue方法来获取集合中的对应键值 
163     string value = http://www.mamicode.com/"";
164     if (myDic.TryGetValue("fff", out value))
165     {
166         Response.Write("\"fff\"的键值为:" + value + "<br/>");
167     }
168     else
169     {
170         Response.Write("没有找到对应键的键值" + "<br/>");
171     }
172 
173     //下面用foreach 来遍历键值对 
174     //泛型结构体用来存储健值对 
175     foreach (KeyValuePair<string, string> kvp in myDic)
176     {
177         Response.Write(kvp.Key+":");
178         Response.Write(kvp.Value+"<br/>");
179     }
180     //获取值得集合
181     Response.Write("方法一:");
182     foreach (string s in myDic.Values)
183     {
184         Response.Write(s+"<br/>");
185     }
186     //获取值得另一种方式
187     Response.Write("方法二:");
188     Dictionary<string, string>.ValueCollection values = myDic.Values;
189     foreach (string s in values)
190     {
191         Response.Write(s+"<br/>");
192     }
193 }
194 本文来源:http://www.cnblogs.com/moss_tan_jun/archive/2010/09/20/1831867.html
195 (已作部分修改)