Távolítsa el az első elemet a listáról

1. Áttekintés

Ebben a szupergyors bemutatóban megmutatjuk, hogyan lehet eltávolítani az első elemet a-ból Lista.

Ezt a műveletet a .az két általános megvalósításakor hajtjuk végre Lista interfész - Tömb lista és LinkedList.

2. A. Létrehozása Lista

Először is, töltsük be a sajátunkat Listas:

@A nyilvános void előtt init () {list.add ("cat"); list.add ("kutya"); list.add ("disznó"); list.add ("tehén"); list.add ("kecske"); linkedList.add ("macska"); linkedList.add ("kutya"); linkedList.add ("disznó"); linkedList.add ("tehén"); linkedList.add ("kecske"); }

3. Tömb lista

Másodszor, távolítsuk el az első elemet a Tömb lista, és győződjön meg arról, hogy listánk nem tartalmazza tovább:

@Test public void givenList_whenRemoveFirst_thenRemoved () {list.remove (0); assertThat (lista, hasSize (4)); assertThat (felsorolja, nem (tartalmazza ((macska)))); }

Amint a fentiekből látható, használjuk eltávolítás (index) módszer az első elem eltávolítására - ez a program bármely megvalósításánál is működni fog Lista felület.

4. LinkedList

LinkedList megvalósítja is eltávolítás (index) módszer (a maga módján), de rendelkezik a removeFirst () módszer.

Ügyeljünk arra, hogy a várt módon működjön:

@Test public void givenLinkedList_whenRemoveFirst_thenRemoved () {linkedList.removeFirst (); assertThat (kapcsolt lista, hasSize (4)); assertThat (kapcsoltList, nem (tartalmazza ("macska"))); }

5. Az idő komplexitása

Bár a módszerek hasonlónak tűnnek, hatékonyságuk eltér. Tömb lista’S eltávolítás () a módszer O (n) időt igényel, míg LinkedList’S removeFirst () A módszer O (1) időt igényel.

Ez azért van, mert Tömb lista tömböt használ a motorháztető alatt, és a eltávolítás () A művelethez meg kell másolni a tömb többi részét az elejére. Minél nagyobb a tömb, annál több elemet kell eltolni.

Ettől eltérően LinkedList mutatókat használ, vagyis minden elem a következőre és az előzőre mutat.

Ezért az első elem eltávolítása azt jelenti, hogy a mutatót csak az első elemre változtatja. Ez a művelet mindig ugyanazt az időt igényli, nem a lista méretétől függően.

6. Következtetés

Ebben a cikkben kitértünk arra, hogyan távolíthatjuk el az első elemet a Lista, és összehasonlították ennek a műveletnek a hatékonyságát Tömb lista és LinkedList megvalósítások.

Szokás szerint a teljes forráskód elérhető a GitHubon.