1. Containere și colecții
Containerele sau colecțiile sunt clase care vă permit să stocați și să procesați mai multe obiecte simultan. Cunoașteți deja două tipuri de containere: matrice și liste.
Java are câteva zeci de colecții, fiecare stocând elemente în felul său specific. Iată câteva dintre ele:
Colectie | Clasă | Descriere |
---|---|---|
|
|
Listă |
|
Lista legată | |
|
Vector | |
|
Grămadă | |
|
|
A stabilit |
|
||
|
||
|
|
Coadă |
|
||
|
|
Hartă/Dicționar |
|
||
|
Numele sunt oarecum ambigue aici. În majoritatea limbajelor de programare, toate aceste structuri de date sunt numite colecții, dar nu în Java. În Java, unele dintre aceste clase implementează interfața Collection
, în timp ce altele nu.
În consecință, colecțiile sunt împărțite în colecții în sens larg și colecții în sens restrâns (doar cele care implementează Collection
interfața).
Deci, pentru a evita confuzia, atunci când vorbim de colecții ne referim în sensul restrâns al cuvântului, adică clase care implementează interfața Collection
. Tipurile List
și tipurile sunt toate colecții Set
. Queue
Colecțiile în sens larg sunt denumite în general containere . Acestea includ tipuri precum Map
și matrice.
2. HashSet
colectare
Clasa HashSet
este o colecție tipică de seturi. În multe privințe, este similar cu ArrayList
clasa. În unele privințe, este o versiune mai primitivă.
Puteți crea un HashSet
obiect folosind o instrucțiune ca:
HashSet<Type> name = new HashSet<Type>();
Unde Type
este tipul de elemente pe care le vom stoca în HashSet
colecție.
Clasa HashSet
are metode ca aceasta:
Metodă | Descriere |
---|---|
|
Adaugă value elementul la colecție |
|
Elimină value elementul din colecție. Returnează true dacă a existat un astfel de element |
|
Verifică dacă colecția are un value element |
|
Șterge colecția, eliminând toate elementele |
|
Returnează numărul de elemente din colecție |
Iată un exemplu de utilizare a unui set.
Să scriem un program care își ia rămas bun de la utilizator dacă el sau ea salută. Pentru a-l face mai interesant, vom oferi programului nostru capacitatea de a înțelege „bună ziua” în mai multe limbi.
Cod | Notă |
---|---|
|
Creați un HashSet obiect care stochează String elemente. Adăugăm în set variabilă salutări în diferite limbi. Citiți un rând din consolă. Dacă șirul este în setul nostru de salutări, atunci ne luăm la revedere. |
3. Setați
Colecția Set
este concepută pentru a deține un set de elemente. De aceea se numește Set
(set). Această colecție are trei caracteristici.
Operații pe platou
Există doar trei lucruri pe care le puteți face cu un set: adăugați elemente la set, eliminați elemente din set și verificați dacă setul conține un anumit element. Asta este.
Nicio comandă
Elementele din această colecție nu au indici. Nu puteți obține un element după un index sau nu puteți scrie o valoare într-o colecție la un anumit index. Un set are nu get()
și set()
metode.
Elemente unice
Toate elementele dintr-un set sunt unice. Spre deosebire de o listă, un set poate conține o singură instanță a unui element. Un obiect este fie în set, fie nu - nu există o a treia opțiune. Nu puteți adăuga negru de trei ori la un set de culori. Ori este acolo, ori nu este.
Găsirea elementelor
Când adăugați un element nou, eliminați un element sau verificați dacă un element există într-un set, se efectuează o căutare a elementului în metodă. Elementul trecut este comparat cu elementele colecției mai întâi prin hashCode()
, iar apoi dacă valorile returnate de hashCode()
se potrivesc, prin equals()
.
4. Compararea colecțiilor: List
vsSet
Să comparăm două tipuri de colecții: List
și Set
Ne vom uita la principalele diferențe, când una este mai avantajoasă decât cealaltă și invers.
Să încercăm să comparăm List și Set folosind jucării ca exemplu.
Colecția List
(listă) este ca un set de jucării aranjate de-a lungul peretelui într-o cameră de joacă. Puteți adăuga o jucărie la sfârșitul listei. Dacă chiar aveți nevoie, îl puteți introduce și în mijloc (dar unele dintre jucăriile existente vor trebui mutate).
Fiecare jucărie are un index. Puteți face referire la o jucărie după index și, de asemenea, puteți înlocui jucăria numărul 7 cu jucăria numărul 13. Puteți elimina jucăria numărul 4 din listă. În cele din urmă, puteți afla indexul fiecărei jucării din listă.
Colecția Set
(setul) seamănă mai mult cu o grămadă de jucării în mijlocul podelei. Puteți adăuga o jucărie la grămadă și puteți elimina o jucărie din grămadă. Dar aceste jucării nu au un index fix asociat cu ele.
Sau să presupunem că alegi o jucărie pentru ziua copilului tău. În primul rând, te gândești dacă are deja jucăria. Toate jucăriile pe care le are deja formează un set de jucării pe care nu vei alege să le cumperi.
Din acest punct de vedere, puteți observa că ordinea jucăriilor într-un set de „jucării care există deja” nu contează și nici dacă băiatul de naștere are două exemple ale unei anumite jucării. Nu vă interesează ordinea sau numărul fiecărei jucării. Ceea ce îți pasă este să cunoști fiecare jucărie unică care există în set.
Pentru astfel de cazuri, aveți nevoie de Set
colecție. Cea mai populară implementare a sa este HashSet
clasa.
GO TO FULL VERSION