首页 > 代码库 > 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 (已作部分修改)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。