• 列表


    .NET Framework为动态列表提供了泛型类List<T>。这个类实现了IList、ICollection、
    IEnumerable、IList<T>、ICollection<T> 和IEnumerable<T>接口。

    创建列表

    调用默认的构造函数,就可以创建列表对象。在泛型类List<T>中,必须为声明为列表的值指
    定类型.ArrayList是一个非泛型列表,它可以将任意0bject类型作为其元素。

    使用默认的构造函数创建一个空列表。元素添加到列表中后,列表的容量就会扩大为可接纳4
    个元素。如果添加了第5个元素,列表的大小就重新设置为包含8个元素。如果8个元素还不够,
    列表的大小就重新设置为包含16个元素。每次都会将列表的容量重新设置为原来的2倍。

    var intList = neW List<int>();

    如果列表的容量改变了,整个集合就要重新分配到一个新的内存块中。在Lis<T>泛型类的实
    现代码中,使用了一个T类型的数组。通过重新分配内存,创建一个新数组,Array.Copy()方法将旧
    数组中的元素复制到新数组中。为节省时间,如果事先知道列表中元素的个数,就可以用构造函数
    定义其容量.

    List<int> intList = new List<int>(10);

    使用Capacity属性可以获取和设置集合的容量。

    intList.Capacity=20;如果已经将元素添加到列表中,且不希望添加更多的元素,就可以调用TrimExcess()方法,去除不需要的容量。但是,因为重新定位需要时间,所以如果元素个数超过了容量的90%,TrimExcess()方法就什么也不做。

    intList.TrimExcess();

    集合初始值设定项

    还可以使用集合初始值设定项给集合赋值。

    var intList = new List<int>(){1,2};
    var stringList = new List<string>() {"one", "two"};

    添加元素

    使用Add()方法可以给列表添加元素,如下所示。实例化的泛型类型定义了Add()方法的参数
    类型:
    var intList = neW List<int>();
    intList.Add(1);
    intList.Add(2);
    Var stringList = new List<string>();
    stringList.Add("one");
    stringList.Add("two");

    使用List<T>类的AddRange()方法,可以一次给集合添加多个元素。因为AddRange()方法的参
    数是IEnumerable<T>型的对象。

    插入元素

    使用Insert()方法可以在指定位置插入元素。

    访问元素

    实现了IList和IList<T>接口的所有类都提供了一个索引器,所以可以使用索引器,方法是通过
    传送元素号来访问元素。第一个元素可以用索引值0来访问。指定intList[3],可以访问列表中的第
    4个元素。

    删除元素

    删除元素时,可以利用索引,也可以传递要删除的元素。下面的代码通过把3传递给RemoveAt()
    方法,删除第4个元素:

    intList.RemoveAt(3);

    RemoveRange()方法可以从集合中删除许多元素。它的第一个参数指定了开始删除的元素索引,
    第二个参数指定了要删除的元素个数。

    搜索有不同的方式在集合中搜索元素。可以获得要查找的元素的索引,或者搜索元素本身。可以使用的方法有Indexof()、LastIndexof()、FindIndex()、FindLastIndex()、FindLast()。如果只检查元素是否存在,List<T>就提供了Exists()方法。

    排序

    List<T>可以使用sort()方法对元素排序。sort()方法使用快速排序算法,比较所有的元素,直
    到整个列表排好序为止。

    类型转换

    使用List<T>类的ConvertAll<TOutpuo>()方法,可以把所有类型的集合转换为另一种类型。

    只读集合创建集合后,它们就是可读写的。当然,集合必须是可读写的,否则就不能给它们填充值了。但是,在填充完集合后,可以创建只读集合。酵合的AsReadOnly()方法返回ReadOnlyCollection<T>类型的对象。ReadOnlyCollection<T>实现的接口与峥合相同,但所有修改集合的方法和属性都抛出NotsuppotedException异常。

  • 相关阅读:
    【数位dp】Beautiful Numbers @2018acm上海大都会赛J
    【状压dp】Trie 树 @中山纪念中学20170304
    两个给点染色的问题-树上染色与图上染色
    【贪心】经营与开发 @upc_exam_5500
    【二分+拓扑排序】Milking Order @USACO 2018 US Open Contest, Gold/upc_exam_6348
    【并查集】Connectivity @ABC049&amp;ARC065/upcexam6492
    【倍增】T-shirt @2018acm徐州邀请赛 I
    Sparse Coding: Autoencoder Interpretation
    Sparse Coding
    Pooling
  • 原文地址:https://www.cnblogs.com/miffylf/p/4028346.html
Copyright © 2020-2023  润新知