F#可變列表

2018-12-15 17:34 更新

List <T>類表示可以通過索引訪問的對象的強(qiáng)類型列表。

它是List類的一個(gè)可變對象。 它類似于數(shù)組,因?yàn)樗梢酝ㄟ^索引訪問,但是,與數(shù)組不同,可以調(diào)整列表大小。 因此,您不需要在聲明過程中指定大小。

創(chuàng)建一個(gè)可變列表

列表是使用new關(guān)鍵字并調(diào)用列表的構(gòu)造函數(shù)創(chuàng)建。下面的例子說明了這一點(diǎn) -

(* 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])

當(dāng)你編譯和執(zhí)行程序,它產(chǎn)生以下輸出 

0: Gone with the Wind
1: Atlas Shrugged
2: Fountainhead
3: Thornbirds
4: Rebecca
5: Narnia

列表(T)類

列表(T)類表示可以通過索引訪問的對象的強(qiáng)類型列表。它提供的方法來搜索,排序和操作的列表。

下表提供的屬性,構(gòu)造函數(shù)和列表(T)類的方法 

屬性

屬性描述
Capacity獲取或設(shè)置內(nèi)部數(shù)據(jù)結(jié)構(gòu)可以保持不調(diào)整元件的總數(shù)量。
Count獲取包含在列表(T)的元素的數(shù)量。
Item獲取或設(shè)置元素指定索引處。

構(gòu)造函數(shù)

構(gòu)造函數(shù)描述
List(T)()初始化列表(T)類為空并且具有默認(rèn)初始容量的新實(shí)例。
List(T)(IEnumerable(T))初始化包含從指定集合復(fù)制的元素,并具有足夠的容量來容納復(fù)制的元素的數(shù)量的列表(T)的類的新實(shí)例。
List(T)(Int32)初始化列表(T)類為空并且具有指定的初始容量的新實(shí)例。

方法

方法描述
Add將對象添加到列表(T)的結(jié)束。
AddRange將指定集合中的元素的列表(T)的結(jié)束。
AsReadOnly返回當(dāng)前集合的只讀IList的(T)包裝。
BinarySearch(T)對于搜索使用默認(rèn)的比較的元素,整個(gè)排序列表(T),并返回該元素的從零開始的索引。
BinarySearch(T, IComparer(T))搜索使用指定的比較的元素,整個(gè)排序列表(T),并返回該元素的從零開始的索引。
BinarySearch(Int32, Int32, T, IComparer(T))搜索范圍在使用指定的比較的元素排序列表(T)的元素,并返回該元素的從零開始的索引。
Clear從列表中刪除(T)的所有元素。
Contains確定一個(gè)元素是否是列表(T)。
ConvertAll(TOutput)在當(dāng)前列表(T)為另一種類型的元素轉(zhuǎn)換,并返回包含轉(zhuǎn)換元素的列表。
CopyTo(T[])將整個(gè)列表(T)到兼容的一維數(shù)組,從目標(biāo)數(shù)組的開頭。
CopyTo(T[], Int32)將整個(gè)列表(T)到兼容的一維數(shù)組,從目標(biāo)數(shù)組的指定索引處。
CopyTo(Int32, T[], Int32, Int32)復(fù)制一定范圍內(nèi)從List(T)的元素到兼容的一維數(shù)組,從目標(biāo)數(shù)組的指定索引處的。
Equals(Object)確定指定的對象是否等于當(dāng)前對象。 (從Object繼承。)
Exists判定列表(T)是否包含匹配指定的謂詞所定義的條件的元素。
Finalize允許一個(gè)對象嘗試釋放資源并之前它是由垃圾收集(從Object繼承)回收執(zhí)行其他清理操作。
Find搜索匹配由指定謂詞所定義的條件,并返回整個(gè)列表(T)中第一次出現(xiàn)的元件。
FindAll檢索所有匹配指定的謂詞所定義的條件的元素。
FindIndex(Predicate(T))搜索匹配由指定謂詞定義的條件,并返回整個(gè)List(T)中第一次出現(xiàn)的從零開始的索引的元素。
FindIndex(Int32, Predicate(T))搜索匹配由指定謂詞所定義的條件,并在列表(T)的元素的范圍內(nèi)返回第一個(gè)出現(xiàn)的從零開始的索引,從指定索引到最后一個(gè)元素延伸的元素。
FindIndex(Int32, Int32, Predicate(T))搜索匹配由指定謂詞所定義的條件,并在列表(T)的元素范圍內(nèi)返回第一個(gè)出現(xiàn)的從零開始的索引啟動(dòng)指定索引處,并包含指定元素?cái)?shù)量的元素。
FindLast搜索匹配由指定謂詞所定義的條件,并返回整個(gè)列表(T)內(nèi)的最后出現(xiàn)的元件。
FindLastIndex(Predicate(T))搜索匹配由指定謂詞定義的條件,并返回整個(gè)List(T)內(nèi)的最后一個(gè)匹配的從零開始的索引的元素。
FindLastIndex(Int32, Predicate(T))搜索匹配由指定謂詞所定義的條件,并在列表(T)的元素的范圍內(nèi)返回最后出現(xiàn)的從零開始的索引,從第一個(gè)元素到指定索引擴(kuò)展的元素。
FindLastIndex(Int32, Int32, Predicate(T))搜索匹配由指定謂詞所定義的條件,并在列表(T)的元素范圍內(nèi)返回最后出現(xiàn)的從零開始的索引,它包含的元素指定數(shù)量的指定索引結(jié)束的元素。
ForEach執(zhí)行列表(T)的每個(gè)元素上指定的操作。
GetEnumerator返回的枚舉列表(T)進(jìn)行迭代。
GetHashCode作為默認(rèn)哈希函數(shù)。 (從Object繼承。)
GetRange創(chuàng)建一個(gè)范圍在源列表(T)的元素的淺表副本。
GetType獲取當(dāng)前實(shí)例的類型。 (從Object繼承。)
IndexOf(T)搜索指定的對象,并返回整個(gè)List(T)中第一次出現(xiàn)的從零開始的索引。
IndexOf(T, Int32)搜索指定的對象,并返回從指定索引到最后一個(gè)元素?cái)U(kuò)展了名單(T)的元素范圍內(nèi)第一次出現(xiàn)的從零開始的索引。
IndexOf(T, Int32, Int32)搜索指定的對象,并返回啟動(dòng)指定索引處和包含的元素指定數(shù)量的列表(T)的元素范圍內(nèi)第一次出現(xiàn)的從零開始的索引。
Insert插入一個(gè)元素指定索引處的列表(T)。
InsertRange插入集合的指定索引處的元素融入到列表(T)。
LastIndexOf(T)搜索指定的對象,并返回整個(gè)List(T)內(nèi)的最后一個(gè)匹配的從零開始的索引。
LastIndexOf(T, Int32)搜索指定的對象,并返回,從第一個(gè)元素到指定索引擴(kuò)展了名單(T)的元素范圍內(nèi)最后一次出現(xiàn)的從零開始的索引。
LastIndexOf(T, Int32, Int32)搜索指定的對象,并返回一個(gè)包含元素的指定數(shù)量的指定索引處結(jié)束的名單(T)的元素范圍內(nèi)最后一次出現(xiàn)的從零開始的索引。
MemberwiseClone創(chuàng)建當(dāng)前Object的淺表副本。 (從Object繼承。)
Remove從列表中刪除(T)特定對象的第一次出現(xiàn)。
RemoveAll刪除所有匹配指定的謂詞所定義的條件的元素。
RemoveAt刪除列表(T)的指定索引處的元素。
RemoveRange刪除一個(gè)范圍從List(T)的元素。
Reverse()反轉(zhuǎn)在整個(gè)列表(T)中的元素的順序。
Reverse(Int32, Int32)反轉(zhuǎn)指定范圍中的元素的順序。
Sort()在排序使用默認(rèn)的比較整個(gè)List(T)的元素。
Sort(Comparison(T))用指定的系統(tǒng),在整個(gè)列表(T)的元素。比較(T)。
Sort(IComparer(T))用指定的比較器在整個(gè)List(T)的元素。
Sort(Int32, Int32, IComparer(T))在排序范圍列表中使用指定的比較單元(T)的元素。
ToArray復(fù)制名單(T)的一個(gè)新的數(shù)組中的元素。
ToString返回表示當(dāng)前對象的字符串。 (從Object繼承。)
TrimExcess設(shè)置的能力的列表(T)的元件的實(shí)際數(shù)量,如果該數(shù)量小于一個(gè)閾值。
TrueForAll確定列表(T)的每個(gè)元素是否在指定的謂詞所定義的條件相匹配。

(* 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])

當(dāng)你編譯和執(zhí)行程序,它產(chǎn)生以下輸出 

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
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號