F # - listy modyfikowalne

Plik List<'T> class reprezentuje silnie wpisaną listę obiektów, do których można uzyskać dostęp za pomocą indeksu.

Jest to zmienny odpowiednik klasy List. Jest podobny do tablic, ponieważ można uzyskać do niego dostęp za pomocą indeksu, jednak w przeciwieństwie do tablic można zmieniać rozmiar list. Dlatego nie musisz określać rozmiaru podczas deklaracji.

Tworzenie listy mutacji

Listy są tworzone przy użyciu newsłowo kluczowe i wywołanie konstruktora listy. Poniższy przykład demonstruje to -

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

Kiedy kompilujesz i wykonujesz program, daje to następujące dane wyjściowe -

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

Klasa List (T)

Klasa List (T) reprezentuje listę obiektów, do których można uzyskać dostęp za pomocą indeksu. Zapewnia metody wyszukiwania, sortowania i manipulowania listami.

Poniższe tabele zawierają właściwości, konstruktory i metody klasy List (T) -

Nieruchomości

własność Opis
Pojemność Pobiera lub ustawia całkowitą liczbę elementów, które wewnętrzna struktura danych może przechowywać bez zmiany rozmiaru.
Liczyć Pobiera liczbę elementów zawartych na liście (T).
Pozycja Pobiera lub ustawia element pod określonym indeksem.

Konstruktorzy

Konstruktor Opis
Lista (T) () Inicjuje nowe wystąpienie klasy List (T), które jest puste i ma domyślną pojemność początkową.
Lista (T) (IEnumerable (T)) Inicjuje nowe wystąpienie klasy List (T), które zawiera elementy skopiowane z określonej kolekcji i ma wystarczającą pojemność, aby pomieścić liczbę skopiowanych elementów.
Lista (T) (Int32) Inicjuje nowe wystąpienie klasy List (T), które jest puste i ma określoną pojemność początkową.

metoda

Metody Opis
Dodaj Dodaje obiekt na końcu listy (T).
AddRange Dodaje elementy określonej kolekcji na końcu List (T).
AsReadOnly Zwraca otokę IList (T) tylko do odczytu dla bieżącej kolekcji.
BinarySearch (T) Przeszukuje całą posortowaną List (T) dla elementu przy użyciu domyślnej funkcji porównującej i zwraca indeks elementu liczony od zera.
BinarySearch (T, IComparer (T)) Przeszukuje całą posortowaną List (T) dla elementu przy użyciu określonej funkcji porównującej i zwraca indeks elementu liczony od zera.
BinarySearch (Int32, Int32, T, IComparer (T)) Przeszukuje zakres elementów w posortowanej List (T) dla elementu przy użyciu określonej funkcji porównującej i zwraca indeks elementu liczony od zera.
Jasny Usuwa wszystkie elementy z listy (T).
Zawiera Określa, czy element znajduje się na liście (T).
ConvertAll (TOutput) Konwertuje elementy w bieżącej List (T) na inny typ i zwraca listę zawierającą przekonwertowane elementy.
CopyTo (T []) Kopiuje całą List (T) do zgodnej jednowymiarowej tablicy, zaczynając od początku tablicy docelowej.
CopyTo (T [], Int32) Kopiuje całą List (T) do zgodnej jednowymiarowej tablicy, rozpoczynając od określonego indeksu tablicy docelowej.
CopyTo (Int32, T [], Int32, Int32) Kopiuje zakres elementów z List (T) do zgodnej jednowymiarowej tablicy, rozpoczynając od określonego indeksu tablicy docelowej.
Równa się (obiekt) Określa, czy określony obiekt jest równy bieżącemu obiektowi. (Odziedziczone po Object.)
Istnieje Określa, czy List (T) zawiera elementy, które pasują do warunków zdefiniowanych przez określony predykat.
Sfinalizować Umożliwia obiektowi próbę zwolnienia zasobów i wykonanie innych operacji czyszczenia, zanim zostanie odzyskany przez wyrzucanie elementów bezużytecznych (dziedziczony z obiektu).
Odnaleźć Wyszukuje element, który spełnia warunki zdefiniowane przez określony predykat i zwraca pierwsze wystąpienie w całym List (T).
Znajdź wszystko Pobiera wszystkie elementy, które pasują do warunków zdefiniowanych przez określony predykat.
FindIndex (Predicate (T)) Wyszukuje element, który spełnia warunki zdefiniowane przez określony predykat i zwraca indeks (liczony od zera) pierwszego wystąpienia w całym List (T).
FindIndex (Int32, Predicate (T)) Wyszukuje element, który pasuje do warunków zdefiniowanych przez określony predykat i zwraca indeks (liczony od zera) pierwszego wystąpienia w zakresie elementów na List (T), który rozciąga się od określonego indeksu do ostatniego elementu.
FindIndex (Int32, Int32, Predicate (T)) Wyszukuje element, który spełnia warunki zdefiniowane przez określony predykat, i zwraca indeks (liczony od zera) pierwszego wystąpienia w zakresie elementów na liście (T), który zaczyna się od określonego indeksu i zawiera określoną liczbę elementów.
FindLast Wyszukuje element, który spełnia warunki zdefiniowane przez określony predykat i zwraca ostatnie wystąpienie w całym List (T).
FindLastIndex (Predicate (T)) Wyszukuje element, który pasuje do warunków zdefiniowanych przez określony predykat i zwraca indeks (liczony od zera) ostatniego wystąpienia w całym List (T).
FindLastIndex (Int32, predykat (T)) Wyszukuje element, który pasuje do warunków zdefiniowanych przez określony predykat i zwraca indeks (liczony od zera) ostatniego wystąpienia w zakresie elementów w List (T), który rozciąga się od pierwszego elementu do określonego indeksu.
FindLastIndex (Int32, Int32, Predicate (T)) Wyszukuje element, który spełnia warunki zdefiniowane przez określony predykat, i zwraca indeks (liczony od zera) ostatniego wystąpienia w zakresie elementów na List (T), który zawiera określoną liczbę elementów i kończy się na określonym indeksie.
Dla każdego Wykonuje określoną akcję na każdym elemencie List (T).
GetEnumerator Zwraca moduł wyliczający, który wykonuje iterację przez List (T).
GetHashCode Służy jako domyślna funkcja skrótu. (Odziedziczone po Object.)
GetRange Tworzy płytką kopię zakresu elementów na liście źródłowej (T).
GetType Pobiera typ bieżącego wystąpienia. (Odziedziczone po Object.)
IndexOf (T) Wyszukuje określony obiekt i zwraca indeks (liczony od zera) pierwszego wystąpienia w całym List (T).
IndexOf (T; Int32) Wyszukuje określony obiekt i zwraca indeks (liczony od zera) pierwszego wystąpienia w zakresie elementów w List (T), który rozciąga się od określonego indeksu do ostatniego elementu.
IndexOf (T, Int32, Int32) Wyszukuje określony obiekt i zwraca indeks (liczony od zera) pierwszego wystąpienia w zakresie elementów w List (T), który zaczyna się od określonego indeksu i zawiera określoną liczbę elementów.
Wstawić Wstawia element do List (T) o określonym indeksie.
InsertRange Wstawia elementy kolekcji do List (T) o określonym indeksie.
LastIndexOf (T) Wyszukuje określony obiekt i zwraca indeks (liczony od zera) ostatniego wystąpienia w całym List (T).
LastIndexOf (T; Int32) Wyszukuje określony obiekt i zwraca indeks (liczony od zera) ostatniego wystąpienia w zakresie elementów w List (T), który rozciąga się od pierwszego elementu do określonego indeksu.
LastIndexOf (T, Int32, Int32) Wyszukuje określony obiekt i zwraca indeks (liczony od zera) ostatniego wystąpienia w zakresie elementów w List (T), który zawiera określoną liczbę elementów i kończy się na określonym indeksie.
MemberwiseClone Tworzy płytką kopię bieżącego obiektu. (Odziedziczone po Object.)
Usunąć Usuwa pierwsze wystąpienie określonego obiektu z listy (T).
Usuń wszystko Usuwa wszystkie elementy, które pasują do warunków zdefiniowanych przez określony predykat.
UsuńAt Usuwa element pod określonym indeksem List (T).
RemoveRange Usuwa zakres elementów z listy (T).
Odwrócić() Odwraca kolejność elementów na całej liście (T).
Odwrotny (Int32, Int32) Odwraca kolejność elementów w określonym zakresie.
Sortować() Sortuje elementy w całej liście (T) przy użyciu domyślnej funkcji porównującej.
Sortuj (porównanie (T)) Sortuje elementy w całej List (T) przy użyciu określonego System. Porównanie (T).
Sortuj (IComparer (T)) Sortuje elementy w całej List (T) przy użyciu określonej funkcji porównującej.
Sortuj (Int32, Int32, IComparer (T)) Sortuje elementy w zakresie elementów w List (T) przy użyciu określonej funkcji porównującej.
ToArray Kopiuje elementy List (T) do nowej tablicy.
ToString Zwraca ciąg, który reprezentuje bieżący obiekt. (Odziedziczone po Object.)
TrimExcess Ustawia pojemność na rzeczywistą liczbę elementów na liście (T), jeśli ta liczba jest mniejsza niż wartość progowa.
TrueForAll Określa, czy każdy element na liście (T) jest zgodny z warunkami zdefiniowanymi przez określony predykat.

Przykład

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

Kiedy kompilujesz i wykonujesz program, daje to następujące dane wyjściowe -

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