ArrayList
:System.Collections命名空间中定义的一个类;
优点:功能比Array类更加强大;
大小是可以动态变化的;
在ArrayList中可以很方便地把一个元素插入到指定的位置,也可以很轻松地删除一个元素;
缺点:ArrayList的效率与数组相比就要差一些
ArrayList类的方法:
(1) Add:向ArrayList中增加元素。
(2) Insert:在ArrayList的某个特定位置插入元素。
(3) Remove:删除ArrayList中的某个元素。
(4) RemoveAt:删除ArrayList中的某个特定位置的元素。
(5) IndexOf:返回ArrayList中某个元素的索引。
(6) Reverse:将ArrayList中的元素倒排。
(7) Sort:将ArrayList中的元素排序。
Hashtable是System.Collections.HashTable类定义的。
与传统的数组相比,它的优点与ArrayList一样。
但是由于它的键值不要求是一个整数,而这个数据必须是惟一的,所以在添加和删除元素的时候,需要花费更大力量的工作。
Hashtable中的排序是对值进行排序。
SortedList也可以保存键值与元素值的对应关系,并按照键值进行自动排序
SortedList类也是位于System.Collections命名空间中。
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
void page_load(object serder, EventArgs e)
{
Label1.Text = "";
}
protected void Button1_Click(object sender, EventArgs e)
{
int inti = -1;
Array aryName = Array.CreateInstance(typeof(String), 5);
aryName.SetValue("Jim", 0);
aryName.SetValue("Cindy", 1);
aryName.SetValue("Cathy", 2);
aryName.SetValue("Cindy", 3);
aryName.SetValue("Kate", 4);
Label1.Text = aryName.GetValue(1).ToString() + "<br/>" ;//输出指定下标的数族元素的值
Label1.Text += Array.IndexOf(aryName, "Cathy").ToString() + "<br/>";//检索指定值的数族元素的下标
do
{
inti = Array.IndexOf(aryName, "Cindy", inti + 1);//检索指定值的数族元素的下标
Label1.Text += inti.ToString() + "<br>";
} while (inti < Array.LastIndexOf(aryName, "Cindy"));//判断条件inti小于最后一个"Cindy"的下标值
Array.Reverse(aryName);//反转数组
for (inti = 0; inti <= 4; inti++) Label1.Text += aryName.GetValue(inti) + " ";
Label1.Text += "<br>";
Array.Sort(aryName);//数组排序
for (inti = 0; inti <= 4; inti++) Label1.Text += aryName.GetValue(inti) + " ";
Label1.Text += "<br>";
}
protected void Button2_Click(object sender, EventArgs e)
{
ArrayList arylstName = new ArrayList();
arylstName.Add("Jim");
arylstName.Add("Cindy");
arylstName.Add("Cathy");
arylstName.Add("Linda");
arylstName.Add("Kate");//
show(arylstName);//
arylstName.Insert(2, "Mike");//在2处插入Mike
show(arylstName);
arylstName.Remove("Linda");//删除Linda
show(arylstName);
arylstName.RemoveAt(3);//删除3处的元素
show(arylstName);
}
void show(ArrayList arylst)
{
int inti;
for (inti = 0; inti < arylst.Count; inti++) Label1.Text += arylst[inti] + " ";
Label1.Text += "<br>";
}
protected void Button3_Click(object sender, EventArgs e)
{
Hashtable hashtab = new Hashtable();
hashtab["0101"] = "数据结构";
hashtab["3045"] = "操作系统";
hashtab["2178"] = "编译原理";
hashtab["1003"] = "软件工程";
hashtab["5645"] = "C语言程序设计";
foreach (DictionaryEntry item in hashtab)
Label1.Text += item.Key + " " + item.Value + "<br>";
}
protected void Button4_Click(object sender, EventArgs e)
{
SortedList slist = new SortedList();
slist["0101"] = "数据结构";
slist["3045"] = "操作系统";
slist["2178"] = "编译原理";
slist["1003"] = "软件工程";
slist["5645"] = "C语言程序设计";
foreach (DictionaryEntry item in slist)
Label1.Text += item.Key + " " + item.Value + "<br>";
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Array" OnClick="Button1_Click"/>
<asp:Button ID="Button2" runat="server" Text="ArrayList" OnClick="Button2_Click" />
<asp:Button ID="Button3" runat="server" Text="Hashtable" OnClick="Button3_Click" />
<asp:Button ID="Button4" runat="server" Text="SortedList" OnClick="Button4_Click" /><br />
<br />
<br />
<asp:Label ID="Label1" runat="server"></asp:Label><br />
<asp:Label ID="Label2" runat="server"></asp:Label></div>
</form>
</body>
</html>