1. ArrayListosztály
Ma megvizsgáljuk az ArrayListosztá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 ArrayListgyű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 ArrayListosztályt, amely ugyanazt a munkát végezte, mint az Arrayosztály, de átméretezhető volt.
ArrayList osztály
Az ArrayListosztály neve két szóból áll: Array + List. Arrayegy tömb és Listegy lista.
Minden ArrayListobjektum 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. ArrayListObjektum létrehozása
Objektum létrehozásához ArrayLista következő kódot kell írnia:
ArrayList<TypeParameter> name = new ArrayList<TypeParameter>();
Hol ArrayListtalálható a gyűjtemény típusa/osztálya, TypeParametera gyűjteményben tárolt elemek típusa ArrayListés egy változó nameneve .ArrayList<TypeParameter>
A namevá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 Integerinká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 valueazt 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 ArrayListmű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 ArrayListhaszná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 ArrayListosztá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