一:ArrayList 类简单说明
动态数组ArrayList类在System.Collecions的命名空间下,所以使用时要加入System.Collecions命名空间,而且ArrayList提供添加,插入或移除某一范围元素的方法。ArrayList代表了可被单独索引的对象的有序集合。它基本上可以替代一个数组。但是,与数组不同的是,您可以使用索引在指定的位置添加和移除项目,动态数组会自动重新调整它的大小。它也允许在列表中进行动态内存分配、增加、搜索、排序 各项。
二:ArrayList 类的构造函数
构造函数 |
构造函数说明 |
ArrayList() |
初始化 ArrayList 类的新实例,该实例为空并且具有默认初始容量。 |
ArrayList(ICollection) |
初始化 ArrayList 类的新实例,该类包含从指定集合复制的元素,并具有与复制的元素数相同的初始容量。 |
ArrayList(Int32) |
初始化 ArrayList 类的新实例,该实例为空并且具有指定的初始容量。 |
三:ArrayList 类的属性
属性 |
属性说明 |
Capacity |
获取或设置 ArrayList 可包含的元素数。 |
Count |
获取 ArrayList 中实际包含的元素数。 |
IsFixedSize |
获取一个值,该值指示 ArrayList 是否具有固定大小。 |
IsReadOnly |
获取一个值,该值指示 ArrayList 是否为只读。 |
IsSynchronized |
获取一个值,该值指示是否同步对 ArrayList 的访问(线程安全) |
Item[Int32] |
获取或设置指定索引处的元素。 |
SyncRoot |
获取可用于同步对 ArrayList 的访问的对象。 |
1:使用举例说明
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
// 创建一个空的ArrayList,并添加一些元素.
ArrayList stringList = new ArrayList();
stringList.Add("a");
stringList.Add("abc");
stringList.Add("abcdef");
stringList.Add("abcdefg");
Console.WriteLine("Element {0} is \"{1}\"", 2, stringList[2]);
try
{
Console.WriteLine("Element {0} is \"{1}\"", 4, stringList[4]);
}
catch (ArgumentOutOfRangeException aoore)
{
Console.WriteLine("stringList({0}) is out of range.", 4);
}
|
运行结果:
Element 2 is "abcdef"
stringList(4) is out of range.
四:ArrayList 类的常用方法
方法 |
方法说明 |
Add(Object) |
将对象添加到 ArrayList 的结尾处。 |
AddRange(ICollection) |
将 ICollection 的元素添加到 ArrayList 的末尾。 |
Clear() |
从 ArrayList 中移除所有元素。 |
Clone() |
创建 ArrayList 的浅表副本。 |
Contains(Object) |
确定某元素是否在 ArrayList 中。 |
CopyTo(Array) |
从目标数组的开头开始,将整个 ArrayList 复制到兼容的一维 Array。 |
Equals(Object) |
确定指定对象是否等于当前对象。 |
GetRange(Int32, Int32) |
返回一个 ArrayList,它表示源 ArrayList 中的元素子集。 |
IndexOf(Object) |
搜索指定的 Object,并返回整个 ArrayList 中第一个匹配项的从零开始的索引。 |
LastIndexOf(Object) |
在整个 ArrayList 中搜索指定的 Object,并返回最后一个匹配项的从零开始的索引。 |
Insert(Int32, Object) |
将元素插入 ArrayList 的指定索引处。 |
Remove(Object) |
从 ArrayList 中移除特定对象的第一个匹配项。 |
RemoveAt(Int32) |
移除 ArrayList 的指定索引处的元素。 |
Reverse() |
将整个 ArrayList 中元素的顺序反转。 |
Sort() |
对整个 ArrayList 中的元素进行排序。 |
ToArray() |
将 ArrayList 的元素复制到新 Object 数组中。 |
ToString() |
返回表示当前对象的字符串。 |
1: AddRange(ICollection)方法使用举例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
// 创建并初始化新的ArrayList
ArrayList myAL = new ArrayList();
myAL.Add("ab");
myAL.Add("cd");
myAL.Add("efg");
// 创建并初始化新队列.
Queue myQueue = new Queue();
myQueue.Enqueue("and");
myQueue.Enqueue("new arraylist");
// 将队列元素复制到ArrayList的末尾.
myAL.AddRange(myQueue);
foreach (Object obj in myAL)
{
Console.Write("{0} ",obj);
}
|
运行结果:
ab cd efg and new arraylist
2: ArrayList.Clone() 方法使用举例
1
2
3
4
5
6
7
8
9
10
11
12
13
|
// 创建并初始化新的ArrayList
ArrayList myAL = new ArrayList();
myAL.Add("ab");
myAL.Add("cd");
myAL.Add("efg");
// 克隆动态数组到新的动态数组里.
ArrayList newArray = (ArrayList)myAL.Clone();
foreach (Object obj in newArray)
{
Console.Write("{0} ",obj);
}
|
运行结果:
ab cd efg
3:ArrayList.Remove(Object) 使用举例
1
2
3
4
5
6
7
8
9
10
11
12
13
|
ArrayList myAL = new ArrayList();
myAL.Add("ab");
myAL.Add("cd");
myAL.Add("efg");
myAL.Add(true);
myAL.Remove(true);//移除单个元素
foreach (Object obj in myAL)
{
Console.Write("{0} ", obj);
}
|
运行结果:
ab cd efg
4:ArrayList.RemoveAt(Int32) 使用举例
1
2
3
4
5
6
7
8
9
10
11
|
ArrayList myAL = new ArrayList();
myAL.Add("ab");
myAL.Add("cd");
myAL.Add("efg");
myAL.RemoveAt(1);//根据下标号删除元素
foreach (Object obj in myAL)
{
Console.Write("{0} ", obj);
}
|
运行结果:
ab efg
5:ArrayList.RemoveAt(Int32) 使用举例
1
2
3
4
5
6
7
8
9
10
11
12
13
|
ArrayList myAL = new ArrayList();
myAL.Add("ab");
myAL.Add("cd");
myAL.Add("efg");
myAL.Add("lm");
myAL.Add("nopq");
myAL.RemoveRange(1,3);//根据下标范围删除元素
foreach (Object obj in myAL)
{
Console.Write("{0} ", obj);
}
|
运行结果:
ab nopq
6:ArrayList.Reverse() 使用举例
1
2
3
4
5
6
7
8
9
10
11
|
ArrayList myAL = new ArrayList();
myAL.Add("ab");
myAL.Add("cd");
myAL.Add("efg");
myAL.Reverse();//反转所有元素
foreach (Object obj in myAL)
{
Console.Write("{0} ", obj);
}
|
运行结果:
efg cd ab
7:ArrayList.Insert(Int32, Object)使用举例
1
2
3
4
5
6
7
8
9
10
11
|
ArrayList myAL = new ArrayList();
myAL.Add("ab");
myAL.Add("cd");
myAL.Add("efg");
myAL.Insert(2,"new");
foreach (Object obj in myAL)
{
Console.Write("{0} ", obj);
}
|
运行结果:
ab cd new efg
8:ArrayList.InsertRange(Int32, ICollection) 使用举例
1
2
3
4
5
6
7
8
9
10
11
|
ArrayList myAL = new ArrayList();
int[] shuzu= {1,2,3,4,5};
myAL.Add("ab");
myAL.Add("cd");
myAL.Add("efg");
myAL.InsertRange(2, shuzu);//指定位置,插入集合
foreach (Object obj in myAL)
{
Console.Write("{0} ", obj);
}
|
运行结果:
ab cd 1 2 3 4 5 efg
9:ArrayList.Contains(Object) 使用举例
1
2
3
4
5
6
7
8
|
ArrayList myAL = new ArrayList();
myAL.Add("ab");
myAL.Add("cd");
myAL.Add("efg");
myAL.Add("nopq");
bool b = myAL.Contains("nopq");//是否包含指定元素
Console.WriteLine("是否包含nopq = {0}", b);
|
运行结果:
是否包含nopq = true
|