Egy tömb első elemének eltávolítása
1. Áttekintés
Ebben az oktatóanyagban megnézzük, hogyan lehet eltávolítani egy tömb első elemét.
Ezen felül azt is meglátjuk, hogy a Java Collections Framework adatstruktúráinak felhasználása hogyan teszi a dolgokat még könnyebbé.
2. Használata Arrays.copyOfRange ()
Először is, A tömb elemének eltávolítása technikailag nem lehetséges a Java-ban. A hivatalos dokumentumokat idézve:
„A tömb egy olyan tárolóobjektum, amely rögzített számú, egyetlen típusú értéket tartalmaz. A tömb hossza a tömb létrehozásakor jön létre. A létrehozás után a hossza rögzített. ”
Ez azt jelenti, hogy mindaddig, amíg közvetlenül egy tömbnel dolgozunk, csak annyit tehetünk, hogy létrehozunk egy új, kisebb méretű tömböt, amely akkor nem tartalmazza az első elemet.
Szerencsére a JDK egy kényelmes statikus segítő funkciót biztosít, amelyet használhatunk Arrays.copyOfRange ():
Karakterlánc [] stringArray = {"foo", "bar", "baz"}; Karakterlánc [] módosított Array = tömbök.copyOfRange (stringArray, 1, stringArray.length);
Vegye figyelembe, hogy ennek a műveletnek a költsége: Tovább) mivel minden alkalommal új tömböt hoz létre.
Természetesen ez nehézkes módon eltávolíthat egy elemet a tömbből, és ha rendszeresen végez ilyen műveleteket, akkor ésszerűbb lehet a Java gyűjtemények keretrendszerét használni.
3. Használja a Lista Végrehajtás
Az adatszerkezet nagyjából azonos szemantikájának megtartása érdekében (az indexek szerint elérhető sorrendben elrendezett elemek sorrendje) célszerű az Lista felület.
A két leggyakoribb megvalósítás Tömb lista és LinkedList.
Tegyük fel, hogy a következők állnak rendelkezésünkre Listas:
List arrayList = new ArrayList (); // az ArrayList List feltöltése linkedList = new LinkedList (); // a LinkedList feltöltése
Mivel mindkét osztály ugyanazt az interfészt valósítja meg, az első elem eltávolítására szolgáló példakód ugyanúgy néz ki:
arrayList.remove (0); linkedList.remove (0);
Abban az esetben Tömb lista, az eltávolítás költsége Tovább), miközben LinkedList költsége van O (1).
Ez nem azt jelenti, hogy a-t kellene használnunk LinkedList mindenhol alapértelmezettként, mivel egy objektum lekérésének költsége fordítva van. A hívás költsége kap (i) van O (1) abban az esetben Tömb lista és Tovább) abban az esetben LinkedList.
4. Következtetés
Láttuk, hogyan lehet eltávolítani egy tömb első elemét a Java-ban. Ezen felül megvizsgáltuk, hogyan érhetjük el ugyanazt az eredményt a Java Collections Framework segítségével.
A példakódot a GitHubon találja meg.