Keluarkan Elemen Pertama dari Senarai

1. Gambaran keseluruhan

Dalam tutorial super cepat ini, kami akan menunjukkan cara membuang elemen pertama dari Senarai .

Kami akan melakukan operasi ini untuk dua pelaksanaan biasa antara muka Senarai - ArrayList dan LinkedList .

2. Membuat Senarai

Pertama, mari isi Senarai kami :

@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 keluarkan elemen pertama dari ArrayList, dan pastikan senarai kami tidak lagi mengandungi:

@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 kaedah hapus (indeks) untuk menghapus elemen pertama - ini juga akan berfungsi untuk pelaksanaan antara muka Senarai .

4. Senarai Terpaut

LinkedList juga menerapkan kaedah remove (index) (dengan cara tersendiri) tetapi juga mempunyai kaedah removeFirst () .

Mari pastikan ia berfungsi seperti yang diharapkan:

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

5. Kerumitan Masa

Walaupun kaedahnya serupa, kecekapannya berbeza. ArrayList 's keluarkan () kaedah memerlukan O (n) masa, manakala LinkedList ' s removeFirst () kaedah memerlukan O (1) kali.

Ini kerana ArrayList menggunakan array di bawah tudung, dan operasi remove () memerlukan menyalin array yang lain ke awal. Semakin besar susunannya, semakin banyak elemen yang perlu dialihkan.

Tidak seperti itu, LinkedList menggunakan penunjuk yang bermaksud bahawa setiap elemen menunjuk pada yang berikutnya dan yang sebelumnya.

Oleh itu, membuang elemen pertama bermaksud menukar penunjuk kepada elemen pertama. Operasi ini selalu memerlukan masa yang sama tidak bergantung pada ukuran senarai.

6. Kesimpulannya

Dalam artikel ini, kami telah membahas cara membuang elemen pertama dari Senarai, dan membandingkan kecekapan operasi ini untuk pelaksanaan ArrayList dan LinkedList .

Seperti biasa, kod sumber lengkap boleh didapati di GitHub.