Das erste Element aus einer Liste entfernen

Entfernen Sie das erste Element aus einer Liste

1. Überblick

In diesem superschnellen Tutorial zeigen wir, wie Sie das erste Element ausList entfernen.

Wir führen diese Operation für zwei gängige Implementierungen derList-Schnittstelle aus -ArrayList undLinkedList.

2. List erstellen

Füllen wir zunächst unsereLists aus:

@Before
public void init() {
    list.add("cat");
    list.add("dog");
    list.add("pig");
    list.add("cow");
    list.add("goat");

    linkedList.add("cat");
    linkedList.add("dog");
    linkedList.add("pig");
    linkedList.add("cow");
    linkedList.add("goat");
}

3. ArrayList

Zweitens entfernen wir das erste Element ausArrayList, und stellen sicher, dass unsere Liste es nicht mehr enthält:

@Test
public void givenList_whenRemoveFirst_thenRemoved() {
    list.remove(0);

    assertThat(list, hasSize(4));
    assertThat(list, not(contains("cat")));
}

Wie oben gezeigt, verwenden wir die Methoderemove(index), um das erste Element zu entfernen -this will also work for any implementation of the List interface.

4. LinkedList

LinkedList implementiert auch dieremove(index)-Methode (auf seine eigene Weise), hat aber auch dieremoveFirst()-Methode.

Stellen wir sicher, dass es wie erwartet funktioniert:

@Test
public void givenLinkedList_whenRemoveFirst_thenRemoved() {
    linkedList.removeFirst();

    assertThat(linkedList, hasSize(4));
    assertThat(linkedList, not(contains("cat")));
}

5. Zeitliche Komplexität

Obwohl die Methoden ähnlich aussehen, unterscheidet sich ihre Effizienz. ArrayListremove()Methode erfordert O (n) Zeit, währendLinkedListremoveFirst()Methode O (1) Zeit benötigt.

Dies liegt daran, dassArrayList ein Array unter der Haube verwendet und für die Operationremove() der Rest des Arrays an den Anfang kopiert werden muss. Je größer das Array ist, desto mehr Elemente müssen verschoben werden.

Im Gegensatz dazu verwendetLinkedList Zeiger, was bedeutet, dass jedes Element auf das nächste und das vorherige zeigt.

Wenn Sie das erste Element entfernen, müssen Sie lediglich den Zeiger auf das erste Element ändern. Diese Operation benötigt immer dieselbe Zeit, unabhängig von der Größe einer Liste.

6. Fazit

In diesem Artikel haben wir beschrieben, wie das erste Element ausList, entfernt wird, und die Effizienz dieser Operation fürArrayList- undLinkedList -Erleichterungen verglichen.

Wie üblich ist der vollständige Quellcodeover on GitHub verfügbar.