可变列表
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