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)Class

List(T)类repres获得可以通过索引访问的强类型对象列表.它提供了搜索,排序和操作列表的方法.

下表提供了List(T)类的属性,构造函数和方法 :

属性

Property描述
Capacity获取或设置内部数据结构可以容纳的元素总数而不调整大小.
Count获取List(T)中包含的元素数.
Item获取或设置指定索引处的元素.

构造函数

构造函数描述
List(T)()初始化List(T)类的新实例,该实例为空且具有默认初始容量.
List(T)(IEnumerable(T))初始化包含复制元素的List(T)类的新实例来自指定的集合,并具有足够的容量来容纳复制的元素数.
List(T)(Int32)初始化List(T)类的新实例,该实例为空且具有指定的初始容量.

方法

方法描述
添加将一个对象添加到List(T)的末尾.
AddRange将指定集合的元素添加到List(T)的末尾.
AsReadOnly返回当前集合的只读IList(T)包装.
BinarySearch(T)使用默认比较器搜索整个排序列表(T)中的元素,并返回元素的从零开始的索引.
BinarySearch(T,IComparer(T))搜索整个已排序使用指定的比较器的元素的List(T)并返回元素的从零开始的索引.
BinarySearch( Int32,Int32,T,IComparer(T))使用指定的比较器和ret搜索元素的排序列表(T)中的一系列元素urns元素的从零开始的索引.
Clear删除所有List(T)中的元素.
Contains确定元素是否在列表(T)中.
ConvertAll(TOutput)转换当前List(T)中的元素为另一种类型,并返回包含已转换元素的列表.
CopyTo( T [])将整个List(T)复制到兼容的一维数组,从目标数组的开头开始.
CopyTo(T [],Int32)将整个List(T)复制到兼容的一维数组,开始在目标数组的指定索引处.
CopyTo(Int32,T [],Int32,Int32)从目标ar的指定索引处开始,将List(T)中的一系列元素复制到兼容的一维数组中ray.
Equals(Object)确定指定的对象是否相等到当前的对象. (继承自Object.)
Exists确定是否为List(T )包含与指定谓词定义的条件匹配的元素.
Finalize允许对象在垃圾收集(继承自Object)回收之前尝试释放资源并执行其他清理操作.
Find搜索与指定谓词定义的条件匹配的元素,并返回整个List(T)中的第一个匹配项.
FindAll检索与指定谓词定义的条件匹配的所有元素.
FindIndex(Predicate(T))搜索符合指定条件的元素谓词,并返回整个List(T)中第一次出现的从零开始的索引.
FindIndex(Int32,Predicate(T))搜索符合条件定义的元素指定的谓词,并返回List(T)中从指定索引延伸到最后一个元素的元素范围内第一次出现的从零开始的索引.
FindIndex(Int32,Int32,Predicate(T))搜索与指定谓词定义的条件匹配的元素,并返回List(T)中元素范围内第一次出现的从零开始的索引,它从指定的索引开始并包含指定数量的元素.
FindLast搜索与指定谓词定义的条件匹配的元素,并返回整个List(T)中的最后一个匹配项.
FindLastIndex(Predicate(T))搜索与之匹配的元素由指定谓词定义的条件,并返回整个List(T)中最后一次出现的从零开始的索引.
FindLastIndex(Int32,Predicate(T))搜索与指定谓词定义的条件匹配的元素,并返回该范围内最后一次出现的从零开始的索引List(T)中从第一个元素扩展到指定索引的元素.
FindLastIndex(Int32,Int32) ,Predicate(T))搜索与指定谓词定义的条件匹配的元素,并返回List中元素范围内最后一次出现的从零开始的索引(T)包含指定数量的元素并以指定的索引结束.
ForEach对List(T)的每个元素执行指定的操作.
GetEnumerator返回一个遍历List(T)的枚举器.
GetHashCode用作默认哈希函数. (继承自Object.)
GetRange创建a的浅表副本源列表(T)中的元素范围.
GetType获取当前实例的类型. (继承自Object.)
IndexOf(T)搜索指定对象并返回整个List(T)中第一次出现的从零开始的索引.
IndexOf(T ,Int32)搜索指定的对象,并返回List(T)中从指定索引延伸到最后一个元素范围内第一个匹配项的从零开始的索引.元素.
IndexOf(T,Int32,Int32)搜索指定对象,并返回List(T)中元素范围内第一次出现的从零开始的索引,该元素从指定索引开始并包含指定数量的元素.
插入将元素插入到指定索引处的List(T)中.
InsertRange将集合的元素插入到特定的List(T)中ed index.
LastIndexOf(T)搜索指定的对象和返回整个List(T)中最后一次出现的从零开始的索引.
LastIndexOf(T,Int32)搜索指定的对象,并返回List(T)中从第一个元素扩展到指定索引的元素范围内最后一个匹配的从零开始的索引./td>
LastIndexOf(T,Int32,Int32)搜索指定的对象和返回List(T)中包含指定数量元素并以指定索引结束的元素范围内最后一次出现的从零开始的索引.
MemberwiseClone创建当前Object的浅表副本. (继承自Object.)
Remove删除第一次出现的a List(T)中的特定对象.
RemoveAll删除所有符合指定谓词定义的条件的元素.
RemoveAt删除列表(T)的指定索引处的元素.
RemoveRange从列表(T)中删除一系列元素.
反向()反转整个List(T)中元素的顺序.
Reverse(Int32,Int32)反转指定范围内元素的顺序.
Sort()使用默认比较器对整个List(T)中的元素进行排序.
Sort(Comparison(T))对整个列表中的元素进行排序(T)使用指定的系统.比较(T).
Sort(IComparer(T))排序使用指定的比较器在整个List(T)中的元素.
Sort(Int32, Int32, IComparer(T))使用指定的比较器对List(T)中元素范围内的元素进行排序.
ToArray将List(T)的元素复制到新数组.
ToString返回表示当前对象的字符串. (继承自Object.)
TrimExcess将容量设置为实际List(T)中的元素数,如果该数字小于阈值.
TrueForAll确定List(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