三、.ArrayList类
System.Collections命名空间常用类(ArrayList,HashTable)、接口(ICollection,IEnumerator,IList)和结构(DictionaryEntry)。
ArrayList类和Array类的比较
①. Array的容量或元素个数是固定的,而ArrayList的容量可以根据需要动态扩展。通过设置ArrayList.Capacity的值可以执行重新分配内存和复制元素等操作。
②. 可以通过ArrayList提供的方法在某个时间追加、插入或移除一组元素,而在Array中一次只能对一个元素进行操作。
③. Array的下标是可以设置的,而ArrayList的下标始终是0。(Array比ArrayList灵活)
④. Array可以是多维的,而ArrayList始终是一维的。
using System;
using System.Collections;
namespace ArrayListExample
{
class ArrayListTest
{
static void Main(string[] args)
{
//创建ArrayList新实例,初始容量可省略,默认大小为4
//ArrayList 对象名称=new ArrayList(初始容量)
ArrayList al=new ArrayList();
al.Add("杨过");//数组列表尾部添加元素
al.Add("小龙女");
al.Add("郭襄");
Console.WriteLine("\n容量为:{0} ,个数为:{1}",al.Capacity,al.Count);
/*ArrayList的容量通常大于或等于Count值,如果添加元素时Count值大于容量
则容量自动增加一倍(默认的容量为4,即存储4个元素,如果Count中有5个元素,容量此时自动增长为8)
*/
Console.WriteLine("\n请输入要添加的人名:");
string flag=null;
while(true)
{
string addName=Console.ReadLine();
al.Add(addName); //数组列表尾部添加元素
Console.WriteLine("\n是否继续添加(y/n):");
flag=Console.ReadLine();
if(flag.Equals("n"))
{
break;
}
}
Console.WriteLine("\n请输入要查找的人名");
while(true)
{
string findName=Console.ReadLine();
if(al.Contains(findName))//检测数组列表是否包含指定元素
{
Console.WriteLine("\n数组列表中包含:{0}",findName);
}
else
{
Console.WriteLine("\n数组列表中不包含你要查找的人!");
}
Console.WriteLine("\n要继续查找吗?(y/n)");
flag=Console.ReadLine();
if(flag.Equals("n"))
{
break;
}
}
Console.WriteLine("\n数组列表*包含下列武侠人物:");
foreach(string name in al)
{
Console.WriteLine(name);
}
Console.ReadLine();
}
}
}
属性
描述
Capacity
指定数组列表可以包含的个数,也就是容量
Count
数组列表中元素的实际个数
方法
描述
Add()
在数组列表的尾部追加元素
Contains()
检测数组列表中是否包含指定元素
Insert()
在指定位置插入一个元素
Remove()
从数组列表中移出第一次出现给定的元素
RemoveAt()
从数组列表中移出指定索引处的位置
TrimToSize()
将数组列表容量缩小为元素的个数