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 = "";
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 (已作部分修改)
ASP.NET集合类(转)
时间: 2024-10-12 18:13:01