ArrayList 是 .Net 的動態數組.
主要成員:
/* 靜態方法 */ArrayList.Adapter() //把其他 IList 對象封裝為 ArrayList 使用ArrayList.FixedSize() //封裝為固定容量ArrayList.ReadOnly() //封裝為唯讀ArrayList.Repeat() //根據指定次數的重複值建立 ArrayList/* 屬性 */Capacity //容量Count //元素數IsFixedSize //是否被封裝為固定容量? IsReadOnly //是否被封裝為唯讀? /* 方法 */Add() //添加AddRange() //添加一個集合BinarySearch() //使用二分法快速尋找, 尋找前須先排序; 找不到會返回一個
元素值可以是不同類型、可重複、可為 null:
protected void Button1_Click(object sender, EventArgs e){ ArrayList arr = new ArrayList(); arr.Add("ABC"); arr.Add(123); arr.Add(3.14); arr.Add(null); arr.Add(null); string s = arr[0].ToString(); int n = (int)arr[1]; double f = (double)arr[2]; TextBox1.Text = string.Concat(s, ", ", n, ", ", f); //ABC, 123, 3.14 //TextBox1.Text = string.Concat(arr[0], ", ", arr[1], ", ", arr[2]); //同上}
ArrayList.Repeat()、AddRange() 及遍曆:
protected void Button1_Click(object sender, EventArgs e){ ArrayList arr1 = ArrayList.Repeat("AAA", 3); ArrayList arr2 = ArrayList.Repeat("BBB", 4); arr1.AddRange(arr2); string s1, s2; s1 = s2 = ""; foreach (var x in arr1) { s1 += x.ToString() + " "; //AAA AAA AAA BBB BBB BBB BBB } for (int i = 0; i
GetRange()、SetRange():
protected void Button1_Click(object sender, EventArgs e){ ArrayList arr1 = new ArrayList(6); //指定容量 arr1.Add(1); arr1.Add(2); arr1.Add(3); arr1.Add(4); arr1.Add(5); arr1.Add(6); ArrayList arr2 = arr1.GetRange(2, 3); string s1 = string.Join(", ", arr2.ToArray()); //3, 4, 5 arr1.SetRange(3, arr2); //arr2 中的元素將覆蓋到 arr1 的指定位置, arr1 中須有位置才行 string s2 = string.Join(", ", arr1.ToArray()); //1, 2, 3, 3, 4, 5 TextBox1.Text = s1 + "\n" + s2;}
翻轉與排序:
protected void Button1_Click(object sender, EventArgs e){ ArrayList arr = new ArrayList(10); //指定容量 arr.Add(1); arr.Add(3); arr.Add(5); arr.Add(7); arr.Add(9); arr.Add(2); arr.Add(4); arr.Add(6); arr.Add(8); arr.Add(0); arr.Reverse(); string s1 = string.Join(", ", arr.ToArray()); //0, 8, 6, 4, 2, 9, 7, 5, 3, 1 arr.Reverse(0, arr.Count / 2); string s2 = string.Join(", ", arr.ToArray()); //2, 4, 6, 8, 0, 9, 7, 5, 3, 1 arr.Sort(); string s3 = string.Join(", ", arr.ToArray()); //0, 1, 2, 3, 4, 5, 6, 7, 8, 9 TextBox1.Text = s1 + "\n" + s2 + "\n" + s3; }
插入與刪除:
protected void Button1_Click(object sender, EventArgs e){ ArrayList arr = new ArrayList(9); //指定容量 for (int i = 0; i
IndexOf()、LastIndexOf():
protected void Button1_Click(object sender, EventArgs e){ char[] charArr = "google".ToCharArray(); ArrayList arr = new ArrayList(charArr); //其建立參數可以是一個 ICollection string s1 = string.Join(", ", arr.ToArray()); //g, o, o, g, l, e int n1 = arr.IndexOf('g'); //0 int n2 = arr.LastIndexOf('g'); //3 TextBox1.Text = string.Concat(s1, "\n", n1, "\n", n2); }
BinarySearch():
protected void Button1_Click(object sender, EventArgs e){ string[] strArr = { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten" }; ArrayList arr = new ArrayList(strArr); arr.Sort(); int i = arr.BinarySearch("nine"); //3 string str = string.Join(", ", arr.ToArray()); //eight, five, four, nine, one, seven, six, ten, three, two TextBox1.Text = string.Concat(i, "\n", str);}
FixedSize()、ReadOnly()、IsFixedSize、IsReadOnly:
protected void Button1_Click(object sender, EventArgs e){ ArrayList arr = new ArrayList(); arr.Add("one"); arr = ArrayList.FixedSize(arr); try { arr.Add("two"); } catch (Exception err) { Response.Write(err.Message); } //集合的大小是固定的。 finally { TextBox1.Text = "FixedSize = " + arr.IsFixedSize.ToString(); } //FixedSize = True}protected void Button2_Click(object sender, EventArgs e){ ArrayList arr = ArrayList.Repeat("000", 3); arr[0] = "AAA"; bool b1 = arr.IsReadOnly; //False arr = ArrayList.ReadOnly(arr); bool b2 = arr.IsReadOnly; //True //arr[0] = "BBB"; //再賦值會異常 TextBox1.Text = string.Concat(b1, "\n", b2);}