Verwijder het eerste element uit een lijst

1. Overzicht

In deze supersnelle zelfstudie laten we zien hoe u het eerste element uit een Lijst.

We zullen deze bewerking uitvoeren voor twee veelvoorkomende implementaties van het Lijst koppel - ArrayList en LinkedList.

2. Een Lijst

Laten we eerst onze Lijsts:

@Before public void init () {list.add ("cat"); list.add ("hond"); list.add ("varken"); list.add ("koe"); list.add ("geit"); linkedList.add ("kat"); linkedList.add ("hond"); linkedList.add ("varken"); linkedList.add ("koe"); linkedList.add ("geit"); }

3. ArrayList

Ten tweede, laten we het eerste element uit de ArrayList, en zorg ervoor dat onze lijst het niet langer bevat:

@Test openbare ongeldig gegevenList_whenRemoveFirst_thenRemoved () {list.remove (0); assertThat (lijst, hasSize (4)); assertThat (lijst, niet (bevat ("kat"))); }

Zoals hierboven weergegeven, gebruiken we verwijderen (index) methode om het eerste element te verwijderen - dit werkt ook voor elke implementatie van het Lijst koppel.

4. LinkedList

LinkedList implementeert ook verwijderen (index) methode (op zijn eigen manier) maar het heeft ook de removeFirst () methode.

Laten we ervoor zorgen dat het werkt zoals verwacht:

@Test openbare leegte gegevenLinkedList_whenRemoveFirst_thenRemoved () {linkedList.removeFirst (); assertThat (linkedList, hasSize (4)); assertThat (linkedList, not (contains ("cat"))); }

5. Tijdscomplexiteit

Hoewel de methoden op elkaar lijken, verschilt hun efficiëntie. ArrayList‘S verwijderen() methode vereist O (n) tijd, terwijl LinkedList‘S removeFirst () methode vereist O (1) tijd.

Dit is zo omdat ArrayList gebruikt een array onder de motorkap en de verwijderen() operatie vereist het kopiëren van de rest van de array naar het begin. Hoe groter de array is, hoe meer elementen er moeten worden verschoven.

In tegenstelling tot dat, LinkedList gebruikt pointers, wat betekent dat elk element naar het volgende en het vorige verwijst.

Als u het eerste element verwijdert, hoeft u dus alleen maar de aanwijzer naar het eerste element te veranderen. Deze bewerking vereist altijd dezelfde tijd, niet afhankelijk van de grootte van een lijst.

6. Conclusie

In dit artikel hebben we besproken hoe u het eerste element uit een Lijst, en hebben de efficiëntie van deze operatie vergeleken voor ArrayList en LinkedList implementaties.

Zoals gewoonlijk is de volledige broncode beschikbaar op GitHub.