Entfernen des ersten Elements eines Arrays

1. Übersicht

In diesem Tutorial erfahren Sie, wie Sie das erste Element eines Arrays entfernen .

Darüber hinaus werden wir sehen, wie die Verwendung von Datenstrukturen aus dem Java Collections Framework die Arbeit noch einfacher macht.

2. Verwenden von Arrays.copyOfRange ()

Erstens ist das Entfernen eines Elements eines Arrays in Java technisch nicht möglich . Um die offiziellen Dokumente zu zitieren:

„Ein Array ist ein Containerobjekt, das eine feste Anzahl von Werten eines einzelnen Typs enthält. Die Länge eines Arrays wird beim Erstellen des Arrays festgelegt. Nach der Erstellung ist die Länge festgelegt. “

Dies bedeutet, dass wir, solange wir direkt mit einem Array arbeiten, nur ein neues Array kleinerer Größe erstellen können, das dann nicht das erste Element enthält .

Glücklicherweise bietet das JDK eine praktische statische Hilfsfunktion namens Arrays.copyOfRange () :

String[] stringArray = {"foo", "bar", "baz"}; String[] modifiedArray = Arrays.copyOfRange(stringArray, 1, stringArray.length);

Beachten Sie, dass diese Operation Kosten von O (n) verursacht, da jedes Mal ein neues Array erstellt wird.

Dies ist natürlich eine umständliche Methode, um ein Element aus dem Array zu entfernen. Wenn Sie solche Vorgänge regelmäßig ausführen, ist es möglicherweise sinnvoller, stattdessen das Java Collections Framework zu verwenden.

3. eine Verwendung Liste Implementierung

Um ungefähr die gleiche Semantik der Datenstruktur beizubehalten (eine geordnete Folge von Elementen, auf die über den Index zugegriffen werden kann), ist es sinnvoll, eine Implementierung der List- Schnittstelle zu verwenden.

Die beiden häufigsten Implementierungen sind ArrayList und LinkedList .

Angenommen, wir haben die folgenden Listen :

List arrayList = new ArrayList(); // populate the ArrayList List linkedList = new LinkedList(); // populate the LinkedList

Da beide Klassen dieselbe Schnittstelle implementieren, sieht der Beispielcode zum Entfernen des ersten Elements gleich aus:

arrayList.remove(0); linkedList.remove(0);

Im Fall von Array , sind die Kosten des Entfernens von O (n) , während VerketteteListe ein Kosten hat O (1) .

Dies bedeutet nicht, dass wir standardmäßig überall eine LinkedList verwenden sollten, da die Kosten für das Abrufen eines Objekts umgekehrt sind. Die Kosten für den Aufruf get (i) sind O (1) im Fall von Arraylist und O (n) im Fall von LinkedList .

4. Fazit

Wir haben gesehen, wie das erste Element eines Arrays in Java entfernt wird. Darüber hinaus haben wir uns angesehen, wie Sie mit dem Java Collections Framework dasselbe Ergebnis erzielen können.

Den Beispielcode finden Sie auf GitHub.