F#可变列表
List <T>类表示可以通过索引访问的对象的强类型列表。
它是List类的一个可变对象。 它类似于数组,因为它可以通过索引访问,但是,与数组不同,可以调整列表大小。 因此,您不需要在声明过程中指定大小。
创建一个可变列表
列表是使用new关键字并调用列表的构造函数创建。下面的例子说明了这一点 -
(* Creating a List *) open System.Collections.Generic let booksList = new List<string>() booksList.Add("Gone with the Wind") booksList.Add("Atlas Shrugged") booksList.Add("Fountainhead") booksList.Add("Thornbirds") booksList.Add("Rebecca") booksList.Add("Narnia") booksList |> Seq.iteri (fun index item -> printfn "%i: %s" index booksList.[index])
当你编译和执行程序,它产生以下输出
0: Gone with the Wind 1: Atlas Shrugged 2: Fountainhead 3: Thornbirds 4: Rebecca 5: Narnia
列表(T)类
列表(T)类表示可以通过索引访问的对象的强类型列表。它提供的方法来搜索,排序和操作的列表。
下表提供的属性,构造函数和列表(T)类的方法
属性
属性 | 描述 |
---|---|
Capacity | 获取或设置内部数据结构可以保持不调整元件的总数量。 |
Count | 获取包含在列表(T)的元素的数量。 |
Item | 获取或设置元素指定索引处。 |
构造函数
构造函数 | 描述 |
---|---|
List(T)() | 初始化列表(T)类为空并且具有默认初始容量的新实例。 |
List(T)(IEnumerable(T)) | 初始化包含从指定集合复制的元素,并具有足够的容量来容纳复制的元素的数量的列表(T)的类的新实例。 |
List(T)(Int32) | 初始化列表(T)类为空并且具有指定的初始容量的新实例。 |
方法
方法 | 描述 |
---|---|
Add | 将对象添加到列表(T)的结束。 |
AddRange | 将指定集合中的元素的列表(T)的结束。 |
AsReadOnly | 返回当前集合的只读IList的(T)包装。 |
BinarySearch(T) | 对于搜索使用默认的比较的元素,整个排序列表(T),并返回该元素的从零开始的索引。 |
BinarySearch(T, IComparer(T)) | 搜索使用指定的比较的元素,整个排序列表(T),并返回该元素的从零开始的索引。 |
BinarySearch(Int32, Int32, T, IComparer(T)) | 搜索范围在使用指定的比较的元素排序列表(T)的元素,并返回该元素的从零开始的索引。 |
Clear | 从列表中删除(T)的所有元素。 |
Contains | 确定一个元素是否是列表(T)。 |
ConvertAll(TOutput) | 在当前列表(T)为另一种类型的元素转换,并返回包含转换元素的列表。 |
CopyTo(T[]) | 将整个列表(T)到兼容的一维数组,从目标数组的开头。 |
CopyTo(T[], Int32) | 将整个列表(T)到兼容的一维数组,从目标数组的指定索引处。 |
CopyTo(Int32, T[], Int32, Int32) | 复制一定范围内从List(T)的元素到兼容的一维数组,从目标数组的指定索引处的。 |
Equals(Object) | 确定指定的对象是否等于当前对象。 (从Object继承。) |
Exists | 判定列表(T)是否包含匹配指定的谓词所定义的条件的元素。 |
Finalize | 允许一个对象尝试释放资源并之前它是由垃圾收集(从Object继承)回收执行其他清理操作。 |
Find | 搜索匹配由指定谓词所定义的条件,并返回整个列表(T)中第一次出现的元件。 |
FindAll | 检索所有匹配指定的谓词所定义的条件的元素。 |
FindIndex(Predicate(T)) | 搜索匹配由指定谓词定义的条件,并返回整个List(T)中第一次出现的从零开始的索引的元素。 |
FindIndex(Int32, Predicate(T)) | 搜索匹配由指定谓词所定义的条件,并在列表(T)的元素的范围内返回第一个出现的从零开始的索引,从指定索引到最后一个元素延伸的元素。 |
FindIndex(Int32, Int32, Predicate(T)) | 搜索匹配由指定谓词所定义的条件,并在列表(T)的元素范围内返回第一个出现的从零开始的索引启动指定索引处,并包含指定元素数量的元素。 |
FindLast | 搜索匹配由指定谓词所定义的条件,并返回整个列表(T)内的最后出现的元件。 |
FindLastIndex(Predicate(T)) | 搜索匹配由指定谓词定义的条件,并返回整个List(T)内的最后一个匹配的从零开始的索引的元素。 |
FindLastIndex(Int32, Predicate(T)) | 搜索匹配由指定谓词所定义的条件,并在列表(T)的元素的范围内返回最后出现的从零开始的索引,从第一个元素到指定索引扩展的元素。 |
FindLastIndex(Int32, Int32, Predicate(T)) | 搜索匹配由指定谓词所定义的条件,并在列表(T)的元素范围内返回最后出现的从零开始的索引,它包含的元素指定数量的指定索引结束的元素。 |
ForEach | 执行列表(T)的每个元素上指定的操作。 |
GetEnumerator | 返回的枚举列表(T)进行迭代。 |
GetHashCode | 作为默认哈希函数。 (从Object继承。) |
GetRange | 创建一个范围在源列表(T)的元素的浅表副本。 |
GetType | 获取当前实例的类型。 (从Object继承。) |
IndexOf(T) | 搜索指定的对象,并返回整个List(T)中第一次出现的从零开始的索引。 |
IndexOf(T, Int32) | 搜索指定的对象,并返回从指定索引到最后一个元素扩展了名单(T)的元素范围内第一次出现的从零开始的索引。 |
IndexOf(T, Int32, Int32) | 搜索指定的对象,并返回启动指定索引处和包含的元素指定数量的列表(T)的元素范围内第一次出现的从零开始的索引。 |
Insert | 插入一个元素指定索引处的列表(T)。 |
InsertRange | 插入集合的指定索引处的元素融入到列表(T)。 |
LastIndexOf(T) | 搜索指定的对象,并返回整个List(T)内的最后一个匹配的从零开始的索引。 |
LastIndexOf(T, Int32) | 搜索指定的对象,并返回,从第一个元素到指定索引扩展了名单(T)的元素范围内最后一次出现的从零开始的索引。 |
LastIndexOf(T, Int32, Int32) | 搜索指定的对象,并返回一个包含元素的指定数量的指定索引处结束的名单(T)的元素范围内最后一次出现的从零开始的索引。 |
MemberwiseClone | 创建当前Object的浅表副本。 (从Object继承。) |
Remove | 从列表中删除(T)特定对象的第一次出现。 |
RemoveAll | 删除所有匹配指定的谓词所定义的条件的元素。 |
RemoveAt | 删除列表(T)的指定索引处的元素。 |
RemoveRange | 删除一个范围从List(T)的元素。 |
Reverse() | 反转在整个列表(T)中的元素的顺序。 |
Reverse(Int32, Int32) | 反转指定范围中的元素的顺序。 |
Sort() | 在排序使用默认的比较整个List(T)的元素。 |
Sort(Comparison(T)) | 用指定的系统,在整个列表(T)的元素。比较(T)。 |
Sort(IComparer(T)) | 用指定的比较器在整个List(T)的元素。 |
Sort(Int32, Int32, IComparer(T)) | 在排序范围列表中使用指定的比较单元(T)的元素。 |
ToArray | 复制名单(T)的一个新的数组中的元素。 |
ToString | 返回表示当前对象的字符串。 (从Object继承。) |
TrimExcess | 设置的能力的列表(T)的元件的实际数量,如果该数量小于一个阈值。 |
TrueForAll | 确定列表(T)的每个元素是否在指定的谓词所定义的条件相匹配。 |
例
(* Creating a List *) open System.Collections.Generic let booksList = new List<string>() booksList.Add("Gone with the Wind") booksList.Add("Atlas Shrugged") booksList.Add("Fountainhead") booksList.Add("Thornbirds") booksList.Add("Rebecca") booksList.Add("Narnia") printfn"Total %d books" booksList.Count booksList |> Seq.iteri (fun index item -> printfn "%i: %s" index booksList.[index]) booksList.Insert(2, "Roots") printfn("after inserting at index 2") printfn"Total %d books" booksList.Count booksList |> Seq.iteri (fun index item -> printfn "%i: %s" index booksList.[index]) booksList.RemoveAt(3) printfn("after removing from index 3") printfn"Total %d books" booksList.Count booksList |> Seq.iteri (fun index item -> printfn "%i: %s" index booksList.[index])
当你编译和执行程序,它产生以下输出
Total 6 books 0: Gone with the Wind 1: Atlas Shrugged 2: Fountainhead 3: Thornbirds 4: Rebecca 5: Narnia after inserting at index 2 Total 7 books 0: Gone with the Wind 1: Atlas Shrugged 2: Roots 3: Fountainhead 4: Thornbirds 5: Rebecca 6: Narnia after removing from index 3 Total 6 books 0: Gone with the Wind 1: Atlas Shrugged 2: Roots 3: Thornbirds 4: Rebecca 5: Narnia