Das erste Element eines Arrays entfernen

Erstes Element eines Arrays entfernen

1. Überblick

In diesem Tutorial werdenwe’ll look at how to remove the first element of an array.

Außerdem werden wir sehen, wie die Verwendung von Datenstrukturen ausJava Collections Framework die Dinge noch einfacher macht.

2. Verwenden vonArrays.copyOfRange()

Zunächstremoving an element of an array isn’t technically possible in Java. Um dieofficial docs 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 bedeutetas long as we’re working with an array directly, all we can do is create a new array of smaller size, which then doesn’t contain the first element.

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

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

Beachten Sie, dass diese OperationO(n) kostet, 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. Verwenden einerList-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 derList interface zu verwenden.

Die beiden häufigsten Implementierungen sindArrayList undLinkedList.

Angenommen, wir haben die folgendenLists:

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 vonArrayList betragen die Kosten für das EntfernenO(n), währendLinkedList Kosten vonO(1) haben.

Dies bedeutet nicht, dass wir überall einLinkedListals Standard verwenden sollten, da die Kosten für das Abrufen eines Objekts umgekehrt sind. Die Kosten für den Aufruf vonget(i) betragenO(1) beiArrayList undO(n) beiLinkedList.

4. Fazit

We’ve seen how to remove the first element of an array in Java. Darüber hinaus haben wir uns angesehen, wie Sie mit dem Java Collections Framework dasselbe Ergebnis erzielen können.

Sie finden den Beispielcodeover on GitHub.