F#可变列表

2018-12-15 17:34 更新

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
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号