1. Konténerek és gyűjtemények
A tárolók vagy gyűjtemények olyan osztályok, amelyek lehetővé teszik több objektum egyidejű tárolását és feldolgozását. Kétféle tárolót ismer már: tömböket és listákat.
A Java több tucat gyűjteményt tartalmaz, amelyek mindegyike a maga sajátos módján tárolja az elemeket. Íme néhány közülük:
| Gyűjtemény | Osztály | Leírás |
|---|---|---|
|
|
Lista |
|
Linkelt lista | |
|
Vektor | |
|
Kazal | |
|
|
Készlet |
|
||
|
||
|
|
Sor |
|
||
|
|
Térkép/szótár |
|
||
|
||
A nevek itt kissé félreérthetőek. A legtöbb programozási nyelvben ezeket az adatstruktúrákat gyűjteménynek nevezik, a Java-ban azonban nem. A Java-ban ezen osztályok egy része megvalósítja az Collectioninterfészt, míg mások nem.
Ennek megfelelően a gyűjtemények a tágabb értelemben vett gyűjteményekre és a szűk értelemben vett gyűjteményekre oszlanak (csak azokra, amelyek megvalósítják a Collectionfelületet).
Tehát a félreértések elkerülése végett, amikor gyűjteményekről beszélünk, a szó szűk értelmében értjük, vagyis az Collectioninterfészt megvalósító osztályokat. A Listés Settípusok Queuemindegyike gyűjtemény. A tágabb értelemben vett gyűjteményeket általában konténereknek nevezik . Ide tartoznak a hasonló típusok Mapés a tömbök.
2. HashSetgyűjtemény
Az HashSetosztály egy tipikus készletgyűjtemény. Sok szempontból hasonlít az osztályhoz ArrayList. Bizonyos szempontból ez egy primitívebb változat.
Létrehozhat HashSetobjektumot egy utasítással, például:
HashSet<Type> name = new HashSet<Type>();
Hol Typetalálható a gyűjteményben tárolni kívánt elemek típusa HashSet.
Az HashSetosztálynak vannak ilyen metódusai:
| Módszer | Leírás |
|---|---|
|
Hozzáadja az valueelemet a gyűjteményhez |
|
Eltávolítja az valueelemet a gyűjteményből. Visszaadja true, ha volt ilyen elem |
|
Ellenőrzi, hogy a gyűjteménynek van-e valueeleme |
|
Törli a gyűjteményt, eltávolítja az összes elemet |
|
A gyűjtemény elemeinek számát adja vissza |
Íme egy példa egy készlet használatára.
Írjunk egy programot, amely elköszön a felhasználótól, ha köszön. Hogy még érdekesebb legyen, programunknak lehetőséget adunk arra, hogy több nyelven is megértse a „hello” szót.
| Kód | jegyzet |
|---|---|
|
Hozzon létre egy HashSetobjektumot, amely elemeket tárol String. A változóhoz különféle nyelvű üdvözletet adunk set. Olvasson egy sort a konzolról. Ha a zsinór benne van az üdvözlőkészletünkben, akkor elköszönünk. |
3. Állítsa be
A Setkollekciót úgy tervezték, hogy egy sor elemet tartalmazzon. Ezért hívják Set(halmaznak). Ennek a gyűjteménynek három jellemzője van.
Műveletek egy készleten
Egy halmazsal csak három dolgot tehet: elemeket adhat hozzá a halmazhoz, elemeket távolíthat el a halmazból, és ellenőrizze, hogy a halmaz tartalmaz-e egy adott elemet. Ez az.
Nincs rendelés
A gyűjtemény elemei nem rendelkeznek indexekkel. Nem kaphat meg egy elemet index alapján, és nem írhat értéket egy adott indexen lévő gyűjteménybe. Egy halmaznak nincsenek get()és set()metódusai.
Egyedi elemek
A készlet minden eleme egyedi. A listától eltérően egy halmaz egy elemnek csak egy példányát tartalmazhatja. Egy objektum vagy benne van a készletben, vagy nincs – nincs harmadik lehetőség. A feketét nem lehet háromszor hozzáadni egy színkészlethez. Vagy van, vagy nincs.
Elemek keresése
Amikor új elemet ad hozzá, eltávolít egy elemet, vagy ellenőrzi, hogy létezik-e elem egy halmazban, a metódusban az elem keresése történik. Az átadott elemet először összehasonlítja a gyűjtemény elemeivel hashCode(), majd ha a visszaadott értékek egyeznek hashCode(), akkor a equals().
4. Gyűjtemények összehasonlítása: ListvsSet
Hasonlítsunk össze két típusú kollekciót: Listés SetMegnézzük a főbb különbségeket, amikor az egyik előnyösebb, mint a másik, és fordítva.
Próbáljuk meg összehasonlítani a Listát és a Beállítást játékokkal példaként.
A List(lista)gyűjtemény olyan, mint egy játékszoba fala mentén elhelyezett játékkészlet. A lista végére felvehet egy játékot. Ha nagyon kell, behelyezheti a közepébe is (de néhány meglévő játékot át kell helyezni).
Minden játéknak van indexe. A játékra utalhat az indexe alapján, és a 7-es számú játékot is helyettesítheti a 13-as játékkal. A 4-es számú játékot eltávolíthatja a listáról. Végül megtanulhatja a listában szereplő egyes játékok indexét.
A Set(szett)kollekció inkább játékkupac a padló közepén. Hozzáadhat egy játékot a kupachoz, és kivehet egy játékot a kupacból. De ezekhez a játékokhoz nincs fix index társítva.
Vagy tegyük fel, hogy játékot választasz gyermeked születésnapjára. Először is gondold át, hogy nála van-e már a játék. Az összes játék, amivel már rendelkezik, olyan játékkészletet alkot, amelyet nem fog választani.
Ebből a szempontból láthatja, hogy a "már létező játékok" készletében a játékok sorrendje nem számít, és az sem, hogy a szülinaposnak két példánya van egy adott játékból. Nem érdekli az egyes játékok sorrendje vagy száma. Amit érdekel, az az, hogy ismerje a készletben található minden egyedi játékot.
Az ilyen esetekhez szüksége van a Setgyűjteményre. Legnépszerűbb megvalósítása az HashSetosztály.
GO TO FULL VERSION