Udostępnij za pośrednictwem


ArrayList Klasa

Definicja

Implementuje interfejs IList przy użyciu tablicy, której rozmiar jest dynamicznie zwiększany zgodnie z potrzebami.

public ref class ArrayList : System::Collections::IList
public ref class ArrayList : ICloneable, System::Collections::IList
public class ArrayList : System.Collections.IList
public class ArrayList : ICloneable, System.Collections.IList
[System.Serializable]
public class ArrayList : ICloneable, System.Collections.IList
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class ArrayList : ICloneable, System.Collections.IList
type ArrayList = class
    interface IEnumerable
    interface IList
    interface ICollection
type ArrayList = class
    interface ICollection
    interface IEnumerable
    interface IList
    interface ICloneable
type ArrayList = class
    interface IEnumerable
    interface IList
    interface ICollection
    interface ICloneable
[<System.Serializable>]
type ArrayList = class
    interface IList
    interface ICollection
    interface IEnumerable
    interface ICloneable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ArrayList = class
    interface IList
    interface ICollection
    interface IEnumerable
    interface ICloneable
Public Class ArrayList
Implements IList
Public Class ArrayList
Implements ICloneable, IList
Dziedziczenie
ArrayList
Pochodne
Atrybuty
Implementuje

Przykłady

W poniższym przykładzie pokazano, jak utworzyć i zainicjować ArrayList oraz jak wyświetlić jej wartości.

using namespace System;
using namespace System::Collections;
void PrintValues( IEnumerable^ myList );
int main()
{
   
   // Creates and initializes a new ArrayList.
   ArrayList^ myAL = gcnew ArrayList;
   myAL->Add( "Hello" );
   myAL->Add( "World" );
   myAL->Add( "!" );
   
   // Displays the properties and values of the ArrayList.
   Console::WriteLine( "myAL" );
   Console::WriteLine( "    Count:    {0}", myAL->Count );
   Console::WriteLine( "    Capacity: {0}", myAL->Capacity );
   Console::Write( "    Values:" );
   PrintValues( myAL );
}

void PrintValues( IEnumerable^ myList )
{
   IEnumerator^ myEnum = myList->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Object^ obj = safe_cast<Object^>(myEnum->Current);
      Console::Write( "   {0}", obj );
   }

   Console::WriteLine();
}

/* 
This code produces output similar to the following:

myAL
    Count:    3
    Capacity: 4
    Values:   Hello   World   !

*/
using System;
using System.Collections;
public class SamplesArrayList  {

   public static void Main()  {

      // Creates and initializes a new ArrayList.
      ArrayList myAL = new ArrayList();
      myAL.Add("Hello");
      myAL.Add("World");
      myAL.Add("!");

      // Displays the properties and values of the ArrayList.
      Console.WriteLine( "myAL" );
      Console.WriteLine( "    Count:    {0}", myAL.Count );
      Console.WriteLine( "    Capacity: {0}", myAL.Capacity );
      Console.Write( "    Values:" );
      PrintValues( myAL );
   }

   public static void PrintValues( IEnumerable myList )  {
      foreach ( Object obj in myList )
         Console.Write( "   {0}", obj );
      Console.WriteLine();
   }
}


/*
This code produces output similar to the following:

myAL
    Count:    3
    Capacity: 4
    Values:   Hello   World   !

*/
Imports System.Collections

Public Class SamplesArrayList    
    
    Public Shared Sub Main()
        
        ' Creates and initializes a new ArrayList.
        Dim myAL As New ArrayList()
        myAL.Add("Hello")
        myAL.Add("World")
        myAL.Add("!")
        
        ' Displays the properties and values of the ArrayList.
        Console.WriteLine("myAL")
        Console.WriteLine("    Count:    {0}", myAL.Count)
        Console.WriteLine("    Capacity: {0}", myAL.Capacity)
        Console.Write("    Values:")
        PrintValues(myAL)
    End Sub

    Public Shared Sub PrintValues(myList As IEnumerable)
        Dim obj As [Object]
        For Each obj In  myList
            Console.Write("   {0}", obj)
        Next obj
        Console.WriteLine()
    End Sub

End Class


' This code produces output similar to the following:
' 
' myAL
'     Count:    3
'     Capacity: 4
'     Values:   Hello   World   !

Uwagi

Ważny

Nie zalecamy używania klasy ArrayList do nowego programowania. Zamiast tego zalecamy użycie ogólnej klasy List<T>. Klasa ArrayList została zaprojektowana do przechowywania heterogenicznych kolekcji obiektów. Jednak nie zawsze oferuje najlepszą wydajność. Zamiast tego zalecamy następujące kwestie:

  • W przypadku heterogenicznej kolekcji obiektów użyj typu List<Object> (w języku C#) lub List(Of Object) (w Visual Basic).
  • W przypadku homogenicznej kolekcji obiektów użyj klasy List<T>. Zobacz Zagadnienia dotyczące wydajności w temacie referencyjnym List<T>, aby zapoznać się z omówieniem względnej wydajności tych klas. Zobacz Kolekcje inne niż ogólne nie powinny być używane w usłudze GitHub, aby uzyskać ogólne informacje na temat używania typów kolekcji ogólnych zamiast nieogólne.

Nie ma gwarancji sortowania ArrayList. Należy posortować ArrayList przez wywołanie metody Sort przed wykonaniem operacji (takich jak BinarySearch), które wymagają sortowania ArrayList. Aby zachować kolekcję, która jest automatycznie sortowana w miarę dodawania nowych elementów, możesz użyć klasy SortedSet<T>.

Pojemność ArrayList to liczba elementów, które mogą pomieścić ArrayList. W miarę dodawania elementów do ArrayListpojemność jest automatycznie zwiększana zgodnie z wymaganiami za pośrednictwem lokalizacji rzeczywistej. Pojemność można zmniejszyć przez wywołanie TrimToSize lub jawne ustawienie właściwości Capacity.

programu .NET Framework tylko: W przypadku bardzo dużych obiektów ArrayList można zwiększyć maksymalną pojemność do 2 miliardów elementów w systemie 64-bitowym, ustawiając atrybut enabled elementu konfiguracji <gcAllowVeryLargeObjects> na true w środowisku uruchomieniowym.

Dostęp do elementów w tej kolekcji można uzyskać przy użyciu indeksu liczb całkowitych. Indeksy w tej kolekcji są oparte na zera.

Kolekcja ArrayList akceptuje null jako prawidłową wartość. Umożliwia również zduplikowane elementy.

Używanie tablic wielowymiarowych jako elementów w kolekcji ArrayList nie jest obsługiwane.

Konstruktory

ArrayList()

Inicjuje nowe wystąpienie klasy ArrayList, która jest pusta i ma domyślną pojemność początkową.

ArrayList(ICollection)

Inicjuje nowe wystąpienie klasy ArrayList zawierającej elementy skopiowane z określonej kolekcji i ma taką samą pojemność początkową jak liczba skopiowanych elementów.

ArrayList(Int32)

Inicjuje nowe wystąpienie klasy ArrayList, która jest pusta i ma określoną pojemność początkową.

Właściwości

Capacity

Pobiera lub ustawia liczbę elementów, które mogą zawierać ArrayList.

Count

Pobiera liczbę elementów zawartych w ArrayList.

IsFixedSize

Pobiera wartość wskazującą, czy ArrayList ma stały rozmiar.

IsReadOnly

Pobiera wartość wskazującą, czy ArrayList jest tylko do odczytu.

IsSynchronized

Pobiera wartość wskazującą, czy dostęp do ArrayList jest synchronizowany (bezpieczny wątek).

Item[Int32]

Pobiera lub ustawia element w określonym indeksie.

SyncRoot

Pobiera obiekt, który może służyć do synchronizowania dostępu do ArrayList.

Metody

Adapter(IList)

Tworzy otokę ArrayList dla określonego IList.

Add(Object)

Dodaje obiekt na końcu ArrayList.

AddRange(ICollection)

Dodaje elementy ICollection na końcu ArrayList.

BinarySearch(Int32, Int32, Object, IComparer)

Wyszukuje szereg elementów w posortowanym ArrayList dla elementu przy użyciu określonego modułu porównującego i zwraca indeks oparty na zera elementu.

BinarySearch(Object, IComparer)

Wyszukuje cały posortowany ArrayList dla elementu przy użyciu określonego porównania i zwraca indeks zerowy elementu.

BinarySearch(Object)

Wyszukuje całe posortowane ArrayList elementu przy użyciu domyślnego porównywacza i zwraca indeks oparty na zerze elementu.

Clear()

Usuwa wszystkie elementy z ArrayList.

Clone()

Tworzy płytkią kopię ArrayList.

Contains(Object)

Określa, czy element znajduje się w ArrayList.

CopyTo(Array, Int32)

Kopiuje całą ArrayList do zgodnej jednowymiarowej Array, począwszy od określonego indeksu tablicy docelowej.

CopyTo(Array)

Kopiuje całą ArrayList do zgodnej jednowymiarowej Array, począwszy od początku tablicy docelowej.

CopyTo(Int32, Array, Int32, Int32)

Kopiuje szereg elementów z ArrayList do zgodnego jednowymiarowego Array, począwszy od określonego indeksu tablicy docelowej.

Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.

(Odziedziczone po Object)
FixedSize(ArrayList)

Zwraca otokę ArrayList o stałym rozmiarze.

FixedSize(IList)

Zwraca otokę IList o stałym rozmiarze.

GetEnumerator()

Zwraca moduł wyliczający dla całego ArrayList.

GetEnumerator(Int32, Int32)

Zwraca moduł wyliczający dla zakresu elementów w ArrayList.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetRange(Int32, Int32)

Zwraca ArrayList, która reprezentuje podzbiór elementów w ArrayListźródłowym .

GetType()

Pobiera Type bieżącego wystąpienia.

(Odziedziczone po Object)
IndexOf(Object, Int32, Int32)

Wyszukuje określony Object i zwraca zerowy indeks pierwszego wystąpienia w zakresie elementów w ArrayList rozpoczynających się od określonego indeksu i zawiera określoną liczbę elementów.

IndexOf(Object, Int32)

Wyszukuje określony Object i zwraca indeks zera pierwszego wystąpienia w zakresie elementów w ArrayList, który rozciąga się od określonego indeksu do ostatniego elementu.

IndexOf(Object)

Wyszukuje określony Object i zwraca indeks oparty na zerze pierwszego wystąpienia w całym ArrayList.

Insert(Int32, Object)

Wstawia element do ArrayList w określonym indeksie.

InsertRange(Int32, ICollection)

Wstawia elementy kolekcji do ArrayList w określonym indeksie.

LastIndexOf(Object, Int32, Int32)

Wyszukuje określony Object i zwraca indeks zerowy ostatniego wystąpienia w zakresie elementów w ArrayList, który zawiera określoną liczbę elementów i kończy się na określonym indeksie.

LastIndexOf(Object, Int32)

Wyszukuje określony Object i zwraca indeks zerowy ostatniego wystąpienia w zakresie elementów w ArrayList, który rozciąga się od pierwszego elementu do określonego indeksu.

LastIndexOf(Object)

Wyszukuje określony Object i zwraca indeks zerowy ostatniego wystąpienia w całym ArrayList.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Object.

(Odziedziczone po Object)
ReadOnly(ArrayList)

Zwraca otokę tylko do odczytu ArrayList.

ReadOnly(IList)

Zwraca otokę tylko do odczytu IList.

Remove(Object)

Usuwa pierwsze wystąpienie określonego obiektu z ArrayList.

RemoveAt(Int32)

Usuwa element w określonym indeksie ArrayList.

RemoveRange(Int32, Int32)

Usuwa szereg elementów z ArrayList.

Repeat(Object, Int32)

Zwraca ArrayList, których elementy są kopiami określonej wartości.

Reverse()

Odwraca kolejność elementów w całej ArrayList.

Reverse(Int32, Int32)

Odwraca kolejność elementów w określonym zakresie.

SetRange(Int32, ICollection)

Kopiuje elementy kolekcji na wiele elementów w ArrayList.

Sort()

Sortuje elementy w całym ArrayList.

Sort(IComparer)

Sortuje elementy w całej ArrayList przy użyciu określonego modułu porównującego.

Sort(Int32, Int32, IComparer)

Sortuje elementy w zakresie elementów w ArrayList przy użyciu określonego porównania.

Synchronized(ArrayList)

Zwraca zsynchronizowaną otokę ArrayList (bezpieczne wątki).

Synchronized(IList)

Zwraca zsynchronizowaną otokę IList (bezpieczne wątki).

ToArray()

Kopiuje elementy ArrayList do nowej tablicy Object.

ToArray(Type)

Kopiuje elementy ArrayList do nowej tablicy określonego typu elementu.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)
TrimToSize()

Ustawia pojemność na rzeczywistą liczbę elementów w ArrayList.

Metody rozszerzania

Cast<TResult>(IEnumerable)

Rzutuje elementy IEnumerable do określonego typu.

OfType<TResult>(IEnumerable)

Filtruje elementy IEnumerable na podstawie określonego typu.

AsParallel(IEnumerable)

Umożliwia równoległość zapytania.

AsQueryable(IEnumerable)

Konwertuje IEnumerable na IQueryable.

Dotyczy

Bezpieczeństwo wątkowe

Publiczne statyczne (Shared w Visual Basic) składowe tego typu są bezpieczne wątkowo. Żadne elementy członkowskie wystąpienia nie mają gwarancji bezpieczeństwa wątków.

ArrayList może obsługiwać wiele czytników jednocześnie, o ile kolekcja nie zostanie zmodyfikowana. Aby zagwarantować bezpieczeństwo wątków ArrayList, należy wykonać wszystkie operacje za pośrednictwem otoki zwróconej przez metodę Synchronized(IList).

Wyliczanie za pośrednictwem kolekcji nie jest wewnętrznie procedurą bezpieczną wątkowo. Nawet w przypadku synchronizacji kolekcji inne wątki nadal mogą modyfikować kolekcję, co powoduje zgłoszenie wyjątku przez moduł wyliczający. Aby zagwarantować bezpieczeństwo wątków podczas wyliczania, możesz zablokować kolekcję podczas całego wyliczenia lub przechwycić wyjątki wynikające ze zmian wprowadzonych przez inne wątki.

Zobacz też