1. ArrayList
osztály
Ma megvizsgáljuk az ArrayList
osztályt. Ez az első a gyűjtemények néven ismert osztályok közül . A Java nyelven a gyűjtemények olyan széles és hasznos témát jelentenek, hogy egy egész CodeGym küldetést szentelnek nekik.
A gyűjtemények felépítésének és minden árnyalatának teljes megértéséhez először meg kell tanulnia az OOP-t, a felületeket, az öröklődést, a többszálú kezelés alapjait és még sok mást.
Tehát ma csak a gyűjtemény legegyszerűbb fajtájával fogunk megismerkedni. De elég mélyen ahhoz, hogy megértse, hogyan kell használni és hogyan működik. Most akkor ismerkedjen meg a ArrayList
gyűjteményével .
A háttértörténet
Kezdeném egy kis háttérrel. A programozók nem igazán kedvelték a tömbök egy aspektusát: azt, hogy a méretük nem változtatható. Mi a teendő, ha további három elemet kell tárolnia egy tömbben, de csak egy üres cella van?
Az egyetlen megoldás a tömbök helykorlátaira az volt, hogy egy nagyon nagy tömböt hozzunk létre, hogy elférjen benne az összes tárolandó elem. De ez általában az emlékezet pazarlása volt. Ha egy tömb általában két vagy három elemet tartalmazott, de kicsi az esélye annak, hogy 100-at kell tárolni, akkor létre kellett hozni egy tömböt, amely 100 tárolására alkalmas.
Szóval mit találtak ki a programozók? Megírták az ArrayList
osztályt, amely ugyanazt a munkát végezte, mint az Array
osztály, de átméretezhető volt.
ArrayList osztály
Az ArrayList
osztály neve két szóból áll: Array + List. Array
egy tömb és List
egy lista.
Minden ArrayList
objektum egy szokásos elemtömböt tartalmaz. Amikor egy elemet olvas be ArrayList
, az objektum lekéri azokat a belső tömbjéből. Amikor elemeket ír, azokat a belső tömbbe írja.
Az ArrayList osztályból hiányzik a tömbök összes hátránya. Tudja, hogyan kell:
- Adott típusú elemek tárolása
- A lista dinamikus átméretezése
- Adjon hozzá elemeket a lista végéhez
- Szúrjon be elemeket a lista elejére vagy közepére
- Elemek eltávolítása a lista bárhonnan
További részletekért lásd alább:
2. ArrayList
Objektum létrehozása
Objektum létrehozásához ArrayList
a következő kódot kell írnia:
ArrayList<TypeParameter> name = new ArrayList<TypeParameter>();
Hol ArrayList
található a gyűjtemény típusa/osztálya, TypeParameter
a gyűjteményben tárolt elemek típusa ArrayList
és egy változó name
neve .ArrayList<TypeParameter>
A name
változónak általános típusa van. Két típusból áll: először a gyűjtemény típusát tüntetik fel, majd szögletes zárójelekkel jelzik a gyűjteményben tárolt elemek típusát.
Példák:
Kód | Leírás |
---|---|
|
Egész számok listája |
|
A húrok listája |
|
Valós számok listája |
A tömbökkel ellentétben a gyűjtemények nem tárolhatnak primitív típusokat, csak hivatkozási típusokat . Tehát ha s gyűjteményre van szüksége int
, használja Integer
inkább a wrapper osztályt.
3. Műveletek egyArrayList
Kezdetben az újonnan létrehozott lista hossza nulla, mivel 0 elemet tartalmaz. Ha egy elemet ad hozzá a listához, annak hossza 1-gyel nő. Ha eltávolítja a hozzáadott elemet, a hossza nullára csökken.
Az alábbi táblázat többet megtudhat az osztály metódusairól ArrayList
:
Mód | Leírás |
---|---|
|
Hozzáadja az átadott elemet a listához |
|
Hozzáad egy elemet a lista egy adott helyéhez. |
|
Azt az elemet adja vissza, amelynek az indexeindex |
|
Hozzárendeli value azt az elemet, amelynek indexeindex |
|
Eltávolítja azt az elemet, amelynek indexe index . Visszaadja az eltávolított elemet. |
|
Eltávolítja a metódusnak átadott elemet. Ha egynél több ilyen elem van, akkor az első eltávolításra kerül. |
|
Törli a listát, azaz eltávolítja az összes elemet a listából. |
|
Ellenőrzi, hogy a lista tartalmaz-e value . |
|
Ellenőrzi, hogy a lista üres-e vagy sem. Más szóval, hogy a lista hossza nulla-e. |
|
A lista méretét adja vissza, azaz a lista elemeinek számát. |
|
A lista elemeit tartalmazó tömböt ad vissza. A tömböt át kell adni a metódusnak. |
Ezekkel a módszerekkel szinte bármit megtehet a listával: elemeket cserélhet, elemeket adhat hozzá és elemeket távolíthat el. Egyetlen paranccsal törölheti a listát, vagy akár tömbbé alakíthatja.
4. Összehasonlítása ArrayList
ésArray
Nem hiszem, hogy elkerülhetjük az összehasonlítást ArrayList
és a tömböt.
Csak 4 műveletet hajthat végre a tömbökkel:
- Hozzon létre egy tömböt
- Szerezzen be egy elemet index szerint
- Állítson be egy elemet index szerint
- Adja meg a tömb hosszát
Íme ezek a műveletek, ahogy egy tömbre és egy tömbre vonatkoznak ArrayList
:
Sor | Tömb lista |
---|---|
|
|
|
|
|
|
|
|
Hasonlítsuk össze, hogyan ArrayList
működik egy tömb és hogyan működik. Például hajtsuk végre ezt a feladatot: "olvass be 10 karakterláncot a billentyűzetről és jelenítsd meg a képernyőn fordított sorrendben"
Array használata | Az ArrayList használata |
---|---|
|
|
Az analógia egyértelmű. A tömböknél valahogy minden rövidebb és világosabb. De ez sem nehéz: egy elem beszerzéséhez a módszert ArrayList
használjuk ; get()
elemet, módszert megváltoztatni set()
; hogy megkapjuk a lista hosszát, a size()
módszert.
Tehát miért használják a programozók az ArrayList
osztályt?
A lényeg természetesen az összes többi metódus, amellyel a közönséges tömbök nem rendelkeznek:
- Adjon hozzá egy elemet a listához
- Adjon hozzá egy elemet a lista közepéhez
- Keressen egy elemet a listában
- Elem eltávolítása a listából
GO TO FULL VERSION