和ArrayList是与数组相当的集合类。"/>
技术开发 频道

C#编程利器之集合对象(Collections)

  2.集合对象

  集合类可以组合为集合,存储Object类型的元素和泛型集合类。在.NET 2.0之前,不存在泛型。现在泛型集合类通常是集合的首选类型。泛型集合类是类型安全的,如果使用值类型,是不需要装箱操作的。如果要在集合中添加不同类型的对象,且这些对象不是相互派生的,例如在集合中添加int和string对象,就只需基于对象的集合类。

  象类型的集合位于System.Collections命名空间;泛型集合类位于System.Collections. Generic命名空间;当然,组合集合类还有其他方式。集合可以根据集合类执行的接口组合为列表、集合和字典。接口及其功能如表10-1所示。.NET 2.0为集合类添加了新的泛型接口,例如IEnumerable<T>和IList<T>。这些接口的非泛型版本将一个对象定义为方法的参数,而其泛型版本使用泛型类型T。

  (1)列表

  .NET Framework为动态列表提供了类ArrayList和List<T>。System.Collections.Generic命名空间中的类List<T>的用法非常类似于System.Collections命名空间中的ArrayList类。这个类实现了IList、ICollection和IEnumerable接口。如下代码段:

classProgram
{
  staticvoidMain(
string[]args)
  {
    
//创建列表
    ArrayListlist=newArrayList();
    
//添加元素
    list.Add("张三");
    
//插入元素
    list.Insert(1,"李四");
    
//访问元素
    stringname=list[0].ToString();
    
//删除元素
    list.RemoveAt(1);//删除索引号为1的元素|Remove(Objectobj);
    
//检索元素
    intindex=list.IndexOf("张三"); //得到对象所在的下标
    
//排序元素
    list.Sort(); //有多种重载

    List
<int>l=newList<int>(); //创建列表
    l.Add(1);            //添加元素
    l.Add(7);
    l.Add(
3);
    l.Add(
9);
    l.Add(
6);
    l.Add(
10);
    l.Sort();
    
foreach(int iinl)
    {
      Console.Write(i
+"");
    }

    l.Remove(
10); //删除值为10的元素
  }
}

  关于列表的算法可以参考我以前写过的一篇文章,文章连接:列表算法

  (2)队列

  队列是其元素以先进先出(FIFO)的方式来处理的集合。先放在队列中的元素会先读取。可结合下图来理解:

  在.NET的System.Collections命名空间中有非泛型类Queue,在System.Collections. Generic命名空间中有泛型类Queue<T>。这两个类的功能非常类似,但泛型类是强类型化的,定义了类型T,而非泛型类基于Object类型。

  在创建队列时,可以使用与List<T>类型类似的构造函数。默认的构造函数会创建一个空队列,也可以使用构造函数指定容量。在把元素添加到队列中时,容量会递增,包含4、8、16和32个元素。与List<T>类型类似,队列的容量也总是根据需要成倍增加。非泛型类Queue的默认构造函数与此不同,它会创建一个包含32项的空数组。

  不过一般项目中用得不是很多,这里故不做示例代码.

0
相关文章