Samouczek C# ArrayList z przykładami

⚡ Inteligentne podsumowanie

ArrayList w języku C# to dynamiczna kolekcja z przestrzeni nazw System.Collections, która przechowuje elementy jako obiekty. W przeciwieństwie do tablicy, ArrayList rośnie i maleje w czasie wykonywania i może przechowywać liczby całkowite, ciągi znaków i wartości logiczne na jednej liście.

  • 🔄 Dynamiczne dostosowywanie rozmiarów: ArrayList dodaje i usuwa elementy w czasie wykonywania, więc nie trzeba z góry ustalać liczby elementów, jak ma to miejsce w przypadku tablicy.
  • 📦 Przechowywanie obiektów: Każdy element jest przechowywany jako obiekt, co pozwala na przechowywanie w jednej tablicy ArrayList różnych typów danych, takich jak int, string i bool.
  • Metody podstawowe: Dodaj, Wstaw, Usuń, Usuń w, Zawiera i Sortuj obejmują codzienne operacje na ArrayList.
  • 📊 Liczba i pojemność: Właściwość Count zwraca bieżącą liczbę elementów, natomiast Capacity to przydzielona przestrzeń dyskowa.
  • Nowoczesny wybór: Microsoft zaleca stosowanie ogólnej Listy dla nowego kodu, ponieważ zapewnia ona bezpieczeństwo typów w czasie kompilacji i pozwala uniknąć pakowania.
  • 🤖 Pomoc AI: GitHub Copilot tworzy szkielet kodu ArrayList, a potoki ML.NET przekazują dane przez typy kolekcji C#.

C# ArrayList

Co to jest ArrayList w C#?

Kolekcja ArrayList jest podobna do Tablice typ danych w C#. Największą różnicą jest dynamiczny charakter kolekcji list tablic.

W przypadku tablic należy zdefiniować liczbę elementów, które tablica może zawierać w momencie deklaracji tablicy. Jednak w przypadku kolekcji Array List nie trzeba tego robić wcześniej. Elementy można dodawać lub usuwać z kolekcji Array List w dowolnym momencie. Przyjrzyjmy się bliżej operacjom dostępnym dla kolekcji Array List.

Deklaracja listy tablic

Poniżej znajduje się deklaracja ArrayList. Lista tablic jest tworzona za pomocą typu danych ArrayList. Słowo kluczowe „new” służy do tworzenia obiektu ArrayList. Obiekt zostaje następnie przypisany do zmiennej a1. Zatem teraz zmienna a1 będzie używana w celu uzyskania dostępu do różnych elementów listy tablic.

ArrayList a1 = new ArrayList()

Dodawanie elementów do tablicy

Metoda add służy do dodawania elementu do ArrayList. Metodę add można wykorzystać do dodania dowolnego rodzaju elementu typu danych do listy tablic. Możesz więc dodać liczbę całkowitą, ciąg znaków, a nawet wartość logiczną do listy tablic. Ogólna składnia metody dodawania jest podana poniżej

ArrayList.add(element)

Poniżej znajduje się kilka przykładów zastosowania metody „dodaj”. Metodę add można wykorzystać do dodawania różnych typów danych do kolekcji Array List.

Poniżej możesz zobaczyć przykłady tego, jak możemy dodać ciągi liczb całkowitych, a nawet wartości logiczne do kolekcji Array List.

  • a1.add(1) – Spowoduje to dodanie wartości całkowitej do kolekcji
  • a1.add(“Przykład”) – Spowoduje to dodanie wartości String do kolekcji
  • a1.add(true) – Spowoduje to dodanie wartości logicznej do kolekcji

Zobaczmy teraz, jak to działa na poziomie kodu. Cały poniższy kod zostanie zapisany w naszej aplikacji konsolowej. Kod zostanie zapisany w naszym pliku Program.cs.

W poniższym programie napiszemy kod tworzący nową listę tablic. Pokażemy także, jak dodawać elementy i wyświetlać elementy listy Array.

Lista tablic w C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add(1);
   a1.Add("Example");
   a1.Add(true);
   
   Console.WriteLine(a1[0]);	  
   Console.WriteLine(a1[1]);
   Console.WriteLine(a1[2]);
   Console.ReadKey();
  }
 }
}

Code Wyjaśnienie:-

  1. Pierwszy krok służy do zadeklarowania naszej listy tablic. Tutaj deklarujemy a1 jako zmienną przechowującą elementy naszej listy tablic.
  2. Następnie używamy słowa kluczowego add, aby dodać liczbę 1, ciąg „Przykład” i wartość logiczną „true” do listy tablic.
  3. Następnie używamy metody Console.WriteLine, aby wyświetlić na konsoli wartość każdego elementu listy tablic. Zauważysz, że podobnie jak tablice, możemy uzyskać dostęp do elementów poprzez ich pozycje indeksowe. Aby uzyskać dostęp do pierwszej pozycji listy tablic, używamy pozycji indeksu [0]. I tak dalej i tak dalej.

Jeżeli powyższy kod zostanie wpisany poprawnie i program zostanie uruchomiony, wyświetlony zostanie następujący wynik.

Wyjście:

Lista tablic w C#

Z danych wyjściowych widać, że wszystkie elementy z listy tablic są wysyłane do konsoli.

Przyjrzyjmy się innym metodom dostępnym w ramach listy ArrayList.

Liczyć

Ta metoda służy do pobierania liczby elementów w kolekcji ArrayList. Poniżej znajduje się ogólna składnia tego stwierdzenia.

ArrayList.Count() – Ta metoda zwróci liczbę elementów zawartych w liście tablic.

zawiera

Ta metoda służy do sprawdzania, czy element znajduje się w kolekcji ArrayList. Poniżej znajduje się ogólna składnia tego stwierdzenia

ArrayList.Contains(element) – Ta metoda zwróci wartość true, jeśli element znajduje się na liście, w przeciwnym razie zwróci wartość false.

Usuń o

Ta metoda służy do usuwania elementu z określonej pozycji w kolekcji ArrayList. Poniżej znajduje się ogólna składnia tego stwierdzenia

ArrayList.RemoveAt(index) – Ta metoda usunie element z określonej pozycji listy tablic.

Zobaczmy teraz, jak to działa na poziomie kodu. Cały poniższy kod zostanie zapisany w naszej aplikacji konsolowej. Kod zostanie zapisany w naszym pliku Program.cs.

W poniższym programie napiszemy kod, aby zobaczyć, jak możemy wykorzystać powyższe metody.

Lista tablic w C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add(1);
   a1.Add("Example");
   a1.Add(true);
   
   Console.WriteLine(a1.Count);
   Console.WriteLine(a1.Contains(2));
   Console.WriteLine(a1[1]);
   a1.RemoveAt(1);
   Console.WriteLine(a1[1]);
   Console.ReadKey();
  }
 }
}

Code Wyjaśnienie:-

  1. Zatem pierwszą właściwością, którą widzimy, jest właściwość Count. Otrzymujemy właściwość Count listy tablic a1, a następnie zapisujemy ją w konsoli.
  2. W drugiej części używamy metody Zawiera, aby sprawdzić, czy lista ArrayList a1 zawiera element 2. Następnie zapisujemy wynik do konsoli za pomocą polecenia Writeline.
  3. Na koniec, aby zaprezentować metodę Usuń element, wykonujemy poniższe kroki:
    1. Najpierw zapisujemy do konsoli wartość elementu znajdującego się na pozycji Index 1 listy tablic.
    2. Następnie usuwamy element znajdujący się na pozycji Index 1 listy tablic.
    3. Na koniec ponownie zapisujemy do konsoli wartość elementu znajdującego się na pozycji Index 1 listy tablic. Ten zestaw kroków da rzetelny pogląd, czy metoda usuwania będzie działać tak, jak powinna.

Jeżeli powyższy kod zostanie wpisany poprawnie i program zostanie uruchomiony, wyświetlony zostanie następujący wynik.

Wyjście:

Lista tablic w C#

Dlaczego ostatnia wartość jest prawdziwa?

Jeśli widzisz sekwencję zdarzeń, element Przykład zostanie usunięty z tablicy, ponieważ znajduje się na pozycji 1. Pozycja 1 tablicy zostanie następnie zastąpiona tym, co znajdowało się wcześniej na pozycji 2, a wartość to „true”

Jak przejść przez listę tablicową w języku C#

Odczyt każdego elementu listy ArrayList to częste zadanie. Ponieważ lista ArrayList przechowuje swoje elementy jako obiekty, można je przeglądać za pomocą pętli foreach lub pętli for, która wykorzystuje właściwość Count. Pętla foreach jest najprostszym sposobem, ponieważ przechodzi przez każdy element po kolei, bez potrzeby indeksowania.

Poniższy przykład tworzy tablicę ArrayList z ciągami znaków i wyświetla każdą wartość w osobnym wierszu. Kod jest zapisany w pliku Program.cs aplikacji konsolowej.

Krok 1) Zaimportuj przestrzeń nazw System.Collections i utwórz ArrayList z trzema elementami.

Krok 2) Użyj pętli foreach, aby odczytać każdy element jako obiekt i zapisać go na konsoli.

using System;
using System.Collections;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add("Java");
   a1.Add("Python");
   a1.Add("Kotlin");
   foreach (object item in a1)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

Code Wyjaśnienie:-

  1. Przestrzeń nazw System.Collections jest importowana, aby typ ArrayList był dostępny dla programu.
  2. Do tablicy ArrayList za pomocą metody Add dodawane są trzy wartości łańcuchowe.
  3. Pętla foreach odczytuje każdy element jako obiekt, a metoda Console.WriteLine drukuje go w nowym wierszu.

Po uruchomieniu programu następuje wydruk Java, Python, Kotlin w osobnych wierszach. Pętla for z właściwością Count dałaby ten sam wynik, a dodatkowo pozwoliłaby na użycie pozycji indeksu każdego elementu.

Metody i właściwości ArrayList w C#

Klasa ArrayList oferuje wiele wbudowanych metod i właściwości do zarządzania swoimi elementami. Oprócz dodawania i usuwania elementów, umożliwia sortowanie, przeszukiwanie i odwracanie kolekcji. Poniżej wymieniono najczęściej używane elementy.

Członek OPIS
Dodaj Dodaje pojedynczy element na końcu ArrayList.
wstawka Dodaje element w określonej pozycji indeksu.
Usunąć Usuwa pierwsze wystąpienie określonego elementu.
Usuń o Usuwa element o podanym indeksie.
Usuń Usuwa wszystkie elementy z ArrayList.
Sortuj Sortuje elementy w kolejności rosnącej.
Reverse Reverseokreśla kolejność elementów na liście.
zawiera Zwraca wartość true, jeśli dany element istnieje na liście.
Indeks Zwraca pozycję indeksu danego elementu.
Liczyć Właściwość zwracająca liczbę przechowywanych elementów.
Pojemność Właściwość zwracająca liczbę elementów, które może zawierać lista.

Dzięki tym elementom możesz dodawać, wyszukiwać, porządkować i usuwać elementy bez konieczności pisania całej logiki, co jest jedną z głównych zalet korzystania z kolekcji zamiast zwykłej tablicy.

Różnica między ArrayList a List w C#

Zarówno ArrayList, jak i generyczny Lista Przechowują grupę elementów, które mogą rosnąć w czasie wykonywania, ale różnią się sposobem obsługi typów. Znajomość tych różnic pomoże Ci wybrać odpowiedni element dla nowoczesnego kodu C#.

Poniżej wymieniono najważniejsze różnice:

  • Bezpieczeństwo typu: Lista ArrayList przechowuje każdy element jako obiekt, natomiast lista List jest powiązana z jednym zadeklarowanym typem i jest sprawdzana w czasie kompilacji.
  • Wydajność: ArrayList pakuje i rozpakowuje typy wartości, takie jak int, co zajmuje czas, podczas gdy List unika pakowania, co zapewnia większą szybkość.
  • Przestrzeń nazw: ArrayList znajduje się w System.Collections, natomiast List w System.Collections.Generic.
  • Odlew: Odczyt z ArrayList często wymaga rzutowania z powrotem na typ oryginalny, natomiast List zwraca bezpośrednio poprawny typ.
  • Zalecenie: Microsoft zaleca Listę do nowych zastosowań, ponieważ jest bezpieczniejsza, szybsza i łatwiejsza do odczytania.

Krótko mówiąc, ArrayList przydaje się do zrozumienia starszego kodu lub pamięci masowej o mieszanym typie, natomiast List jest preferowanym wyborem w większości współczesnych aplikacji.

FAQ

Tablica ma stały rozmiar i przechowuje jeden zestaw typów danych przy deklaracji. ArrayList rośnie i kurczy się w czasie wykonywania i przechowuje każdy element jako obiekt, dzięki czemu może przechowywać różne typy danych na jednej liście.

ArrayList nie jest usuwany, ale Microsoft Nie zaleca się tego w przypadku nowych projektów. Preferowana jest generyczna klasa List w System.Collections.Generic, ponieważ zapewnia bezpieczeństwo typu i lepszą wydajność, dlatego większość współczesnego kodu C# używa klasy List.

Ponieważ ArrayList przechowuje elementy jako obiekty, dodanie typu wartości, takiego jak int, powoduje opakowanie go w obiekt, czyli tzw. boxing. Odczytanie go z powrotem i rzutowanie na typ oryginalny to unboxing. Oba te kroki obniżają wydajność, czego unika List.

ArrayList obsługuje kilka czytników jednocześnie, ale nie ma gwarancji, że elementy instancji będą bezpieczne dla wątków po modyfikacji kolekcji. Aby zapewnić bezpieczeństwo zapisu wielowątkowego, należy opakować go w ArrayList.Syncmetodę chronized lub zamiast tego użyj kolekcji współbieżnej.

Liczba to liczba elementów aktualnie przechowywanych w tablicy ArrayList. Pojemność to całkowita liczba elementów, które może pomieścić tablica przed zmianą rozmiaru. Pojemność jest zawsze równa lub większa niż liczba i rośnie automatycznie wraz z dodawaniem elementów.

Możesz skopiować elementy do listy o silnym typie za pomocą metod Cast i ToList lub wywołać metodę ToArray, aby uzyskać tablicę obiektów. Konwersja do listy generycznej jest powszechna, ponieważ przywraca bezpieczeństwo typów.

Tak. GitHub Copilot może pisać deklaracje ArrayList, dodawać i usuwać wywołania oraz tworzyć pętle na podstawie krótkiego komentarza lub nazwy metody. Często sugeruje również ogólną wersję List, ponieważ jest to zalecana kolekcja dla nowego kodu C#.

ML.NET zazwyczaj odczytuje dane treningowe za pomocą kolekcji generycznych, takich jak List i IEnumerable, które są mapowane na potok IDataView. Niegeneryczna lista ArrayList jest rzadko używana bezpośrednio, ponieważ silnie typizowana kolekcja zapewnia przejrzystość i bezpieczeństwo typów danych uczenia maszynowego.

Podsumuj ten post następująco: