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.