Hapus Elemen Pertama dari Daftar

1. Ikhtisar

Dalam tutorial super cepat ini, kami akan menunjukkan cara menghapus elemen pertama dari Daftar .

Kami akan melakukan operasi ini untuk dua implementasi umum antarmuka Daftar - ArrayList dan LinkedList .

2. Membuat Daftar

Pertama, mari isi Daftar kita :

@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

Kedua, mari kita hapus elemen pertama dari ArrayList, dan pastikan bahwa daftar kita tidak lagi memuatnya:

@Test public void givenList_whenRemoveFirst_thenRemoved() { list.remove(0); assertThat(list, hasSize(4)); assertThat(list, not(contains("cat"))); }

Seperti yang ditunjukkan di atas, kami menggunakan metode remove (index) untuk menghapus elemen pertama - ini juga akan berfungsi untuk setiap implementasi antarmuka Daftar .

4. LinkedList

LinkedList juga mengimplementasikan metode remove (index) (dengan caranya sendiri) tetapi juga memiliki metode removeFirst () .

Mari kita pastikan itu berfungsi seperti yang diharapkan:

@Test public void givenLinkedList_whenRemoveFirst_thenRemoved() { linkedList.removeFirst(); assertThat(linkedList, hasSize(4)); assertThat(linkedList, not(contains("cat"))); }

5. Kompleksitas Waktu

Meskipun metodenya terlihat serupa, efisiensinya berbeda. ArrayList 's hapus () metode membutuhkan O (n) waktu, sedangkan LinkedList ' s removeFirst () metode membutuhkan O (1) waktu.

Ini karena ArrayList menggunakan sebuah array di bawah tenda, dan operasi remove () memerlukan penyalinan sisa array tersebut ke awal. Semakin besar lariknya, semakin banyak elemen yang perlu digeser.

Tidak seperti itu, LinkedList menggunakan pointer yang berarti bahwa setiap elemen mengarah ke elemen berikutnya dan sebelumnya.

Karenanya, menghapus elemen pertama berarti hanya mengubah penunjuk ke elemen pertama. Operasi ini selalu membutuhkan waktu yang sama tidak tergantung pada ukuran list.

6. Kesimpulan

Di artikel ini, kita telah membahas cara menghapus elemen pertama dari List, dan telah membandingkan efisiensi operasi ini untuk implementasi ArrayList dan LinkedList .

Seperti biasa, kode sumber lengkap tersedia di GitHub.