Condividi tramite


ArrayList Classe

Definizione

Implementa l'interfaccia IList usando una matrice le cui dimensioni sono aumentate dinamicamente in base alle esigenze.

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
Ereditarietà
ArrayList
Derivato
Attributi
Implementazioni

Esempio

Nell'esempio seguente viene illustrato come creare e inizializzare un ArrayList e come visualizzarne i valori.

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   !

Commenti

Importante

Non è consigliabile usare la classe ArrayList per il nuovo sviluppo. È invece consigliabile usare la classe generica List<T>. La classe ArrayList è progettata per contenere raccolte eterogenee di oggetti. Tuttavia, non offre sempre le migliori prestazioni. È invece consigliabile:

  • Per una raccolta eterogenea di oggetti, usare il tipo List<Object> (in C#) o List(Of Object) (in Visual Basic).
  • Per una raccolta omogenea di oggetti, utilizzare la classe List<T>. Vedere considerazioni sulle prestazioni nell'argomento di riferimento List<T> per una descrizione delle prestazioni relative di queste classi. Vedere raccolte non generiche non devono essere usate su GitHub per informazioni generali sull'uso di tipi di raccolta generici anziché non generici.

Non è garantito l'ordinamento del ArrayList. È necessario ordinare il ArrayList chiamando il relativo metodo Sort prima di eseguire operazioni , ad esempio BinarySearch, che richiedono l'ordinamento del ArrayList. Per mantenere una raccolta ordinata automaticamente quando vengono aggiunti nuovi elementi, è possibile usare la classe SortedSet<T>.

La capacità di un ArrayList è il numero di elementi che il ArrayList può contenere. Man mano che gli elementi vengono aggiunti a un ArrayList, la capacità viene aumentata automaticamente in base alle esigenze tramite la riallocazione. La capacità può essere ridotta chiamando TrimToSize o impostando la proprietà Capacity in modo esplicito.

solo .NET Framework: Per oggetti ArrayList di grandi dimensioni, è possibile aumentare la capacità massima a 2 miliardi di elementi in un sistema a 64 bit impostando l'attributo enabled dell'elemento di configurazione <gcAllowVeryLargeObjects> su true nell'ambiente di runtime.

È possibile accedere a elementi di questa raccolta usando un indice integer. Gli indici in questa raccolta sono in base zero.

L'insieme ArrayList accetta null come valore valido. Consente anche elementi duplicati.

L'uso di matrici multidimensionali come elementi in una raccolta di ArrayList non è supportato.

Costruttori

ArrayList()

Inizializza una nuova istanza della classe ArrayList vuota e ha la capacità iniziale predefinita.

ArrayList(ICollection)

Inizializza una nuova istanza della classe ArrayList che contiene elementi copiati dalla raccolta specificata e con la stessa capacità iniziale del numero di elementi copiati.

ArrayList(Int32)

Inizializza una nuova istanza della classe ArrayList vuota e ha la capacità iniziale specificata.

Proprietà

Capacity

Ottiene o imposta il numero di elementi che l'ArrayList può contenere.

Count

Ottiene il numero di elementi effettivamente contenuti nella ArrayList.

IsFixedSize

Ottiene un valore che indica se la ArrayList ha una dimensione fissa.

IsReadOnly

Ottiene un valore che indica se il ArrayList è di sola lettura.

IsSynchronized

Ottiene un valore che indica se l'accesso al ArrayList è sincronizzato (thread-safe).

Item[Int32]

Ottiene o imposta l'elemento in corrispondenza dell'indice specificato.

SyncRoot

Ottiene un oggetto che può essere utilizzato per sincronizzare l'accesso al ArrayList.

Metodi

Adapter(IList)

Crea un wrapper ArrayList per un IListspecifico.

Add(Object)

Aggiunge un oggetto alla fine del ArrayList.

AddRange(ICollection)

Aggiunge gli elementi di un ICollection alla fine del ArrayList.

BinarySearch(Int32, Int32, Object, IComparer)

Cerca un intervallo di elementi nel ArrayList ordinato per un elemento usando l'operatore di confronto specificato e restituisce l'indice in base zero dell'elemento.

BinarySearch(Object, IComparer)

Cerca nell'intero ArrayList ordinato un elemento usando l'operatore di confronto specificato e restituisce l'indice in base zero dell'elemento.

BinarySearch(Object)

Cerca nell'intero ArrayList ordinato un elemento usando l'operatore di confronto predefinito e restituisce l'indice in base zero dell'elemento.

Clear()

Rimuove tutti gli elementi dalla ArrayList.

Clone()

Crea una copia superficiale del ArrayList.

Contains(Object)

Determina se un elemento si trova nel ArrayList.

CopyTo(Array, Int32)

Copia l'intero ArrayList in un Arrayunidimensionale compatibile, a partire dall'indice specificato della matrice di destinazione.

CopyTo(Array)

Copia l'intero ArrayList in un Arrayunidimensionale compatibile, a partire dall'inizio della matrice di destinazione.

CopyTo(Int32, Array, Int32, Int32)

Copia un intervallo di elementi dal ArrayList a un Arrayunidimensionale compatibile, a partire dall'indice specificato della matrice di destinazione.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
FixedSize(ArrayList)

Restituisce un wrapper ArrayList con dimensioni fisse.

FixedSize(IList)

Restituisce un wrapper IList con dimensioni fisse.

GetEnumerator()

Restituisce un enumeratore per l'intero ArrayList.

GetEnumerator(Int32, Int32)

Restituisce un enumeratore per un intervallo di elementi nel ArrayList.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetRange(Int32, Int32)

Restituisce un ArrayList che rappresenta un subset degli elementi nell'origine ArrayList.

GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
IndexOf(Object, Int32, Int32)

Cerca il Object specificato e restituisce l'indice in base zero della prima occorrenza all'interno dell'intervallo di elementi nella ArrayList che inizia in corrispondenza dell'indice specificato e contiene il numero specificato di elementi.

IndexOf(Object, Int32)

Cerca il Object specificato e restituisce l'indice in base zero della prima occorrenza all'interno dell'intervallo di elementi nella ArrayList che si estende dall'indice specificato all'ultimo elemento.

IndexOf(Object)

Cerca il Object specificato e restituisce l'indice in base zero della prima occorrenza all'interno dell'intero ArrayList.

Insert(Int32, Object)

Inserisce un elemento nella ArrayList in corrispondenza dell'indice specificato.

InsertRange(Int32, ICollection)

Inserisce gli elementi di una raccolta nella ArrayList in corrispondenza dell'indice specificato.

LastIndexOf(Object, Int32, Int32)

Cerca il Object specificato e restituisce l'indice in base zero dell'ultima occorrenza all'interno dell'intervallo di elementi nella ArrayList che contiene il numero specificato di elementi e termina in corrispondenza dell'indice specificato.

LastIndexOf(Object, Int32)

Cerca il Object specificato e restituisce l'indice in base zero dell'ultima occorrenza all'interno dell'intervallo di elementi nella ArrayList che si estende dal primo elemento all'indice specificato.

LastIndexOf(Object)

Cerca il Object specificato e restituisce l'indice in base zero dell'ultima occorrenza nell'intero ArrayList.

MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ReadOnly(ArrayList)

Restituisce un wrapper ArrayList di sola lettura.

ReadOnly(IList)

Restituisce un wrapper IList di sola lettura.

Remove(Object)

Rimuove la prima occorrenza di un oggetto specifico dal ArrayList.

RemoveAt(Int32)

Rimuove l'elemento in corrispondenza dell'indice specificato del ArrayList.

RemoveRange(Int32, Int32)

Rimuove un intervallo di elementi dal ArrayList.

Repeat(Object, Int32)

Restituisce un ArrayList i cui elementi sono copie del valore specificato.

Reverse()

Inverte l'ordine degli elementi nell'intero ArrayList.

Reverse(Int32, Int32)

Inverte l'ordine degli elementi nell'intervallo specificato.

SetRange(Int32, ICollection)

Copia gli elementi di una raccolta su un intervallo di elementi nel ArrayList.

Sort()

Ordina gli elementi nell'intero ArrayList.

Sort(IComparer)

Ordina gli elementi nell'intero ArrayList usando l'operatore di confronto specificato.

Sort(Int32, Int32, IComparer)

Ordina gli elementi in un intervallo di elementi in ArrayList usando l'operatore di confronto specificato.

Synchronized(ArrayList)

Restituisce un wrapper ArrayList sincronizzato (thread-safe).

Synchronized(IList)

Restituisce un wrapper IList sincronizzato (thread-safe).

ToArray()

Copia gli elementi del ArrayList in una nuova matrice di Object.

ToArray(Type)

Copia gli elementi del ArrayList in una nuova matrice del tipo di elemento specificato.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
TrimToSize()

Imposta la capacità sul numero effettivo di elementi nella ArrayList.

Metodi di estensione

Cast<TResult>(IEnumerable)

Esegue il cast degli elementi di un IEnumerable al tipo specificato.

OfType<TResult>(IEnumerable)

Filtra gli elementi di un IEnumerable in base a un tipo specificato.

AsParallel(IEnumerable)

Abilita la parallelizzazione di una query.

AsQueryable(IEnumerable)

Converte un IEnumerable in un IQueryable.

Si applica a

Thread safety

I membri statici pubblici (Shared in Visual Basic) di questo tipo sono thread-safe. Non è garantito che tutti i membri dell'istanza siano thread-safe.

Un ArrayList può supportare contemporaneamente più lettori, purché la raccolta non venga modificata. Per garantire la thread safety del ArrayList, tutte le operazioni devono essere eseguite tramite il wrapper restituito dal metodo Synchronized(IList).

L'enumerazione tramite una raccolta non è intrinsecamente una procedura thread-safe. Anche quando una raccolta viene sincronizzata, altri thread possono comunque modificare la raccolta, causando la generazione di un'eccezione da parte dell'enumeratore. Per garantire la thread safety durante l'enumerazione, è possibile bloccare la raccolta durante l'intera enumerazione o intercettare le eccezioni risultanti dalle modifiche apportate da altri thread.

Vedi anche