Útmutató a Java LinkedListhez
1. Bemutatkozás
LinkedList egy kétszeresen összekapcsolt lista megvalósítása a Lista és Deque interfészek. Végrehajtja az összes opcionális listaműveletet és engedélyezi az összes elemet (beleértve a nulla).
2. Jellemzők
Az alábbiakban megtalálja a LinkedList:
- A listába indexelő műveletek a listát elejétől vagy végétől fogják végigjárni, attól függően, hogy melyik áll közelebb a megadott indexhez
- Nincs szinkronizálva
- Az Iterátor és ListIterator az iterátorok hibamentesek (ami azt jelenti, hogy az iterátor létrehozása után, ha a lista módosul, a ConcurrentModificationException eldobják)
- Minden elem egy csomópont, amely megőrzi a következő és az előző hivatkozásokat
- Fenntartja a beszúrási sorrendet
Habár LinkedList nincs szinkronizálva, a szinkronizált verzióját a Collections.synchronizedList módszer, például:
Lista lista = Collections.synchronizedList (új LinkedList (...));
3. Összehasonlítás a Tömb lista
Bár mindketten végrehajtják a Lista interfész, különböző szemantikájuk van - ami határozottan befolyásolja a döntést, hogy melyiket használja.
3.1. Szerkezet
An Tömb lista egy index alapú adatszerkezet, amelyet egy Sor. Véletlenszerű hozzáférést biztosít elemeihez, O (1) értékkel megegyező teljesítménnyel.
Másrészt a LinkedList adatait elemek listájaként tárolja, és minden elem kapcsolódik az előző és a következő elemhez. Ebben az esetben az elem keresési műveletének végrehajtási ideje egyenlő O (n).
3.2. Tevékenységek
Egy elem beillesztési, hozzáadási és eltávolítási műveletei gyorsabbak a LinkedList mivel nincs szükség egy tömb átméretezésére vagy az index frissítésére, amikor egy elemet hozzáadunk valamilyen tetszőleges pozícióhoz a gyűjtemény belsejében, csak a környező elemek hivatkozásai változnak.
3.3. Memóriahasználat
A LinkedList több memóriát fogyaszt, mint egy Tömb lista a csomópontok miatt LinkedList két referenciát tárol, egyet az előző elemére és egyet a következő elemére, míg a Tömb lista csak az adatokat és azok indexét tárolja.
4. Használat
Íme néhány kódminta, amelyek bemutatják, hogyan használhatja LinkedList:
4.1. Teremtés
LinkedList linkedList = új LinkedList ();
4.2. Elem hozzáadása
LinkedList megvalósítja Lista és Deque interfész, a standard mellett add () és az összes hozzáadása() módszereket találhat addFirst () és addLast (), amely egy elemet ad hozzá az elejéhez vagy a végéhez, ill.
4.3. Elem eltávolítása
Az elemek hozzáadásához hasonlóan ez a lista megvalósítása is kínál removeFirst () és removeLast (). Ezenkívül van egy kényelmes módszer removeFirstOccurence () és removeLastOccurence () amely logikai értéket ad vissza (igaz, ha a gyűjtemény megadott elemet tartalmaz). Deque interfész biztosítja a sorszerű viselkedést (valójában Deque kiterjed Sor felület): Ezek a módszerek lekérik az első elemet és eltávolítják a listáról. A különbség közvélemény kutatás() és pop() az, hogy a pop dobni fog NoSuchElementException () üres listán, míg közvélemény kutatás null értéket ad vissza. Az API-k pollFirst () és pollLast () is rendelkezésre állnak. Itt van például a nyom Az API működik: Ami beszúrja az elemet a gyűjtemény élére. LinkedList sok más módszerrel rendelkezik, amelyek többségének ismernie kell a már használt felhasználó számára Listák. Mások, amelyeket a Deque kényelmes alternatíva lehet a „szokásos” módszerekkel szemben. A teljes dokumentáció itt található. Tömb lista általában az alapértelmezett Lista végrehajtás. Vannak azonban bizonyos használati esetek, amikor a LinkedList jobban illeszkedik, például az állandó beillesztési / törlési idő preferenciái (például gyakori beillesztések / törlések / frissítések), az állandó hozzáférési idő és a hatékony memóriahasználat mellett. A kódminták megtalálhatók a GitHubon.4.4. Sor műveletek
linkedList.poll (); linkedList.pop ();
linkedList.push (o objektum);
5. Következtetés