1. ArrayList
clasa
Astăzi vom explora ArrayList
clasa. Aceasta este prima dintre mai multe clase cunoscute sub numele de colecții . În Java, colecțiile sunt un subiect atât de larg și util încât le este dedicată o întreagă căutare CodeGym.
Pentru a înțelege pe deplin cum sunt structurate colecțiile și toate nuanțele lor, trebuie să învățați mai întâi OOP, interfețe, moștenire, elementele de bază ale multithreadingului și multe altele.
Așa că astăzi ne vom familiariza cu cel mai simplu tip de colecție. Dar la un nivel suficient de profund pentru a înțelege cum să-l folosești și cum funcționează. Acum, faceți cunoștință cu ArrayList
colecția .
Povestea de fundal
Voi începe cu un mic fundal. Programatorilor chiar nu le-a plăcut un aspect al matricelor: faptul că dimensiunea lor nu poate fi modificată. Ce se întâmplă dacă trebuie să stocați încă trei elemente într-o matrice, dar există o singură celulă goală?
Singura soluție la limitările de spațiu ale unei matrice a fost să creați o matrice foarte mare pentru a găzdui toate elementele pe care ar putea avea nevoie să le stocați. Dar asta era de obicei o risipă de memorie. Dacă o matrice conținea de obicei două sau trei elemente, dar exista chiar și o șansă mică ca să fie nevoie să stocheze 100 dintre ele, atunci era necesar să se creeze o matrice cu capacitatea de a stoca 100.
Deci, cu ce au venit programatorii? Ei au scris ArrayList
clasa, care a făcut aceeași muncă ca și Array
clasa, dar a fost redimensionabilă.
Clasa ArrayList
Numele clasei ArrayList
este format din două cuvinte: Array + List. Array
este o matrice și List
este o listă.
Fiecare ArrayList
obiect conține o matrice obișnuită de elemente. Când citiți elemente dintr-un ArrayList
, obiectul le preia din matricea sa internă. Când scrieți elemente, le scrie în matricea internă.
Clasei ArrayList îi lipsesc toate dezavantajele pe care le au tablourile. Știe cum să:
- Stocați elemente de un anumit tip
- Redimensionați dinamic lista
- Adăugați elemente la sfârșitul listei
- Inserați elemente la începutul sau la mijlocul listei
- Eliminați elemente de oriunde în listă
Pentru mai multe detalii, vezi mai jos:
2. Crearea unui ArrayList
obiect
Pentru a crea un ArrayList
obiect, trebuie să scrieți cod astfel:
ArrayList<TypeParameter> name = new ArrayList<TypeParameter>();
Unde ArrayList
este tipul/clasa de colecție, TypeParameter
este tipul elementelor stocate în ArrayList
colecție și name
este numele unei ArrayList<TypeParameter>
variabile.
Variabila name
are un tip generic. Se compune din două tipuri: mai întâi se indică tipul colecției, apoi se folosesc paranteze unghiulare pentru a indica tipul elementelor stocate în colecție.
Exemple:
Cod | Descriere |
---|---|
|
Lista numerelor întregi |
|
Lista de șiruri |
|
Lista numerelor reale |
Spre deosebire de matrice, colecțiile nu pot stoca tipuri primitive, ci doar tipuri de referință . Deci, dacă aveți nevoie de o colecție de int
s, utilizați Integer
în schimb clasa wrapper.
3. Operații cu anArrayList
Inițial, lungimea listei nou create este zero, deoarece conține 0 elemente. Dacă adăugați un element în listă, lungimea acestuia crește cu 1. Dacă eliminați elementul adăugat, lungimea scade înapoi la zero.
Următorul tabel vă poate învăța mai multe despre metodele clasei ArrayList
:
Metode | Descriere |
---|---|
|
Adaugă elementul transmis în listă |
|
Adaugă un element la o anumită locație din listă. |
|
Returnează elementul al cărui index esteindex |
|
Atribuie value elementului al cărui index esteindex |
|
Îndepărtează elementul al cărui index este index . Returnează elementul eliminat. |
|
Elimină elementul pe care îl treceți la metodă. Dacă există mai mult de un astfel de element, primul va fi eliminat. |
|
Șterge lista, adică elimină toate elementele din listă. |
|
Verifică dacă lista conține value . |
|
Verifică dacă lista este goală sau nu. Cu alte cuvinte, dacă lungimea listei este zero. |
|
Returnează dimensiunea listei, adică numărul de elemente din listă. |
|
Returnează o matrice care conține elementele listei. Trebuie să treceți matricea la metodă. |
Aceste metode vă permit să faceți aproape orice doriți cu lista: schimbați elemente, adăugați elemente și eliminați elemente. Puteți șterge lista cu o singură comandă sau chiar puteți converti lista într-o matrice.
4. Comparația ArrayList
șiArray
Nu cred că putem evita compararea ArrayList
și o matrice.
Există doar 4 acțiuni pe care le puteți efectua cu matrice:
- Creați o matrice
- Obțineți un element după index
- Setați un element după index
- Obțineți lungimea matricei
Iată aceste operații, așa cum se aplică unei matrice și unui ArrayList
:
Matrice | ArrayList |
---|---|
|
|
|
|
|
|
|
|
Să comparăm cum ArrayList
funcționează o matrice față de modul în care funcționează o matrice. De exemplu, să implementăm această sarcină: „citiți 10 șiruri de caractere de la tastatură și afișați-le pe ecran în ordine inversă”
Folosind Array | Folosind ArrayList |
---|---|
|
|
Analogia este clară. Totul este cumva mai scurt și mai clar pentru matrice. Dar ArrayList
nici nu este dificil: pentru a obține un element, folosim get()
metoda; a schimba un element, set()
metoda; pentru a obține lungimea listei, size()
metoda.
Deci, de ce folosesc programatorii ArrayList
clasa?
Ideea, desigur, sunt toate celelalte metode pe care tablourile obișnuite nu le au:
- Adăugați un element în listă
- Adăugați un element la mijlocul listei
- Găsiți un element în listă
- Eliminarea unui element dintr-o listă
GO TO FULL VERSION