ArrayList este un array dinamic. Asta înseamnă că un ArrayList poate avea orice număr de obiecte, de orice tip. Această structură de date a fost inițial concepută pentru a simplifica procesele de adăugare a elementelor noi într-un array. Sub capotă, un ArrayList este un array a cărui mărime este dublată de fiecare dată când spațiul disponibil se termină. Dublarea dimensiunii aray-ului intern este o strategie foarte eficientă, care reduce numărul de copieri de elemente pe termen lung. Nu voi descrie acest proces aici. Această structură de date este foarte simplu de utilizat:
ArrayList arrayLista = new ArrayList();
arrayLista.Add(56);
arrayLista.Add("String");
arrayLista.Add(new Window());
Dezavantajul structurii de date ArrayList este că trebuie să convertiți valorile preluate înapoi în tipul original:
int valoareArrayList = (int)arrayLista[0];
ArrayList are următoarele metode importante:
Add() – Adaugă un element obiect nou la sfârșitul listei. Putem continua adăugarea elementelor în colecție până când memoria se va termina. Exemplu:
using System.Collections;
class Program
{
static void Main()
{
// Creaza un ArrayList si adauga 3 elemente
ArrayList lista = new ArrayList();
lista.Add("Unu");
lista.Add("Doi");
lista.Add("Trei");
}
}
AddRange() – putem folosi această metodă pentru a combina două ArrayList. Pe plan intern, AddRange() utilizează metodele Array.Copy() sau CopyTo(), care au o performanță mai bună decât unele bucle. Iată cum o folosim:
using System;
using System.Collections;
class Program
{
static void Main()
{
// Creaza un ArrayList cu doua valori.
ArrayList lista = new ArrayList();
lista.Add(5);
lista.Add(7);
// Creaza al doilea ArrayList.
ArrayList lista2 = new ArrayList();
lista2.Add(10);
lista2.Add(13);
// Adauga al doilea ArrayList la primul
lista.AddRange(lista2);
// Afiseaza valorile.
foreach (int i in lista)
Console.WriteLine(i);
}
}
Clear() – Puteți apela metoda instanță Clear() în ArrayList. Pe plan intern, aceasta apelează metoda Array.Clear(), pe care am explicat-o în lecția anterioară. Exemplu:
using System;
using System.Collections;
class Program
{
static void Main()
{
// Creaza un ArrayList cu doua elemente.
ArrayList lista = new ArrayList();
lista.Add(9);
lista.Add(10);
// Afiseaza numarul de elemente in ArrayList.
Console.WriteLine(lista.Count);
// Sterge elementele ArrayList.
lista.Clear();
// Afiseaza numarul de elemente din nou.
Console.WriteLine(lista.Count);
}
}
Sort(), Reverse() – aceste metode fac exact ceea ce spune numele lor: sortează un ArrayList sau inversează ordinea elementelor sale. Exemplu:
using System;
using System.Collections;
class Program
{
static void Main()
{
// Creaza un ArrayList cu patru elementede tip string.
ArrayList lista = new ArrayList();
lista.Add("Pisica");
lista.Add("Zebra");
lista.Add("Caine");
lista.Add("Vaca");
// Sorteaza ArrayList.
lista.Sort();
// Afiseaza elementele ArrayList.
foreach (string valoare in lista)
Console.WriteLine(valoare);
// Inverseaza ordinea elementelor din ArrayList.
lista.Reverse();
// Afiseaza elementele ArrayList din nou.
foreach (string valoare in lista)
Console.WriteLine(valoare);
}
}
Insert(), RemoveAt(), RemoveRange() – metode folosite pentru a adăuga sau elimina elemente dintr-un ArrayList. Remove() utilizează un index numeric pentru a specifica elementul pe care doriți să îl stergeți. RemoveRange() specifică un index de pornire din care ar trebui să înceapă eliminarea elementelor, și un alt parametru numeric pentru a specifica câte elemente vor fi eliminate. Exemplu:
using System;
using System.Collections;
class Program
{
static void Main()
{
// Creaza un ArrayList cu trei elemente de tip string.
ArrayList lista = new ArrayList();
lista.Add("Unu");
lista.Add("Doi");
lista.Add("Trei");
// Sterge elementul din mijlocul ArrayList.
lista.RemoveAt(1); // Va deveni [Unu, Trei]
// Insereaza o noua valoare la inceputul ArrayList.
lista.Insert(0, "Morcov"); // Devine [Morcov, Unu, Trei]
// Sterge primele doua elemente din ArrayList.
lista.RemoveRange(0, 2);
// Afiseaza elementele ArrayList.
foreach (string valoare in lista)
Console.WriteLine(valoare);
}
}
Cea mai importantă proprietate a ArrayLists este Count:
Count – returnează numărul de elemente dintr-un ArrayList.
ArrayList este o colecție pe care este cel mai bine să o evitați. Dar este adesea folosit în programe vechi – deci trebuie să fie încă suportat. Versiunile mai noi .NET Framework oferă colecții mai bune, cum ar fi Listele, despre care vom învăța în viitor.
Tags: array list, arrays, structuri de date