Perbedaan antara Array List dan Linked List Perbedaan Antara

Anonim

Bagaimana Data Disimpan?

Daftar Array dan Linked list adalah istilah umum dalam hal penyimpanan dan pengambilan data. Meskipun ada banyak perangkat penyimpanan, pada akhirnya, mereka bergantung pada mekanisme penyimpanan. Kedua mekanisme penyimpanan ini menempatkan data Anda di perangkat penyimpanan dan mengambilnya bila diperlukan. Mari kita lihat bagaimana mereka menyimpan data dalam memori mereka. Daftar Array menggunakan penyimpanan sekuensial, dan potongan data disimpan satu demi satu. Ini mungkin bentuk penyimpanan yang lebih sederhana - ini menghindari kebingungan. Ya, kita bisa mengambil item atau data berikutnya dari lokasi memori berikutnya dari daftar array; Namun, disimpan dengan bantuan petunjuk dalam daftar Linked. Di sini kita membutuhkan dua lokasi memori untuk penyimpanan - satu untuk data, yang lain untuk pointer. Sebuah pointer alamat lokasi memori data berikutnya. Kita dapat dengan mudah memahami bahwa daftar Linked tidak pernah menyimpan data secara berurutan; Sebaliknya, ia menggunakan mekanisme penyimpanan acak. Petunjuk adalah elemen kunci dalam menemukan lokasi data dalam memori.

Dynamic Array and Linked List

Kita telah membahas bagaimana mekanisme penyimpanan dimasukkan ke dalam data dan kita dapat memberi istilah 'dynamic array' untuk skema penyimpanan internal Array list. Ini hanya menempatkan potongan data satu demi satu - dengan nama - sedangkan daftar Linked menggunakan daftar internal dengan bantuan petunjuk untuk melacak item berikutnya. Oleh karena itu, ia menggunakan daftar tertaut internal, seperti daftar tunggal atau ganda untuk menunjukkan data berikutnya kepada kami.

Penggunaan Memori

Karena daftar Array hanya menyimpan data sebenarnya, kita hanya membutuhkan ruang untuk data yang kita simpan. Sebaliknya, dalam daftar Linked, kita juga menggunakan petunjuk. Oleh karena itu, diperlukan dua lokasi memori, dan dapat dikatakan bahwa linked list menghabiskan lebih banyak memori daripada daftar Array. Sisi menguntungkan dari daftar Linked adalah bahwa ia tidak memerlukan lokasi memori yang terus menerus untuk menyimpan data kita, berlawanan dengan daftar Array. Petunjuknya mampu menahan posisi lokasi data berikutnya, dan kita bahkan bisa menggunakan slot memori yang lebih kecil yang tidak kontinyu. Ketika sampai pada penggunaan memori, petunjuk memainkan peran utama dalam daftar Linked, dan juga efektivitasnya.

Ukuran Daftar Array dan Daftar Terdaftar Awal

Dengan daftar Array, daftar kosong pun memerlukan ukuran 10, namun dengan daftar Linked, kita tidak memerlukan ruang yang begitu besar. Kita bisa membuat daftar Linked kosong dengan ukuran 0. Nantinya, kita bisa menambah ukuran sesuai kebutuhan.

Data Retrieval

Pengambilan data lebih sederhana dalam daftar Array saat menyimpan secara berurutan. Yang dilakukan adalah mengidentifikasi lokasi data pertama; Dari situ, lokasi selanjutnya diakses secara berurutan untuk mengambil sisanya.Ini menghitung seperti posisi data pertama + 'n', di mana 'n' adalah urutan data dalam daftar Array. Daftar Linked merujuk pointer awal untuk menemukan lokasi data pertama, dan dari situ ia merujuk pointer yang terkait dengan setiap data untuk menemukan lokasi data berikutnya. Proses pengambilan terutama bergantung pada petunjuk di sini, dan mereka secara efektif menunjukkan lokasi data berikutnya kepada kami.

End of Data

Daftar Array menggunakan nilai null untuk menandai akhir data, sedangkan Linked list menggunakan pointer null untuk tujuan ini. Begitu sistem mengenali data null, daftar Array menghentikan pengambilan data berikutnya. Dengan cara yang sama, penunjuk null menghentikan sistem agar melanjutkan ke pengambilan data berikutnya.

Reverse Traversal

Daftar Linked memungkinkan kita untuk melintasi arah sebaliknya dengan bantuan descendingiterator (). Namun, kita tidak memiliki fasilitas seperti itu dalam daftar Array - reverse traversal menjadi masalah di sini.

Sintaks

Mari kita lihat Sintaks Java dari kedua mekanisme penyimpanan.

pembuatan daftar Array:

Daftar arraylistsample = new ArrayList ();

Menambahkan objek ke Array List:

Arraylistsample. tambahkan ("name1");

Arraylistsample. tambahkan ("name2");

Ini adalah bagaimana daftar Array yang dihasilkan akan terlihat seperti - [name1, name2].

Pembuatan daftar tertaut:

Daftar linkedlistsample = new linkedList ();

Menambahkan objek ke Linked List:

Linkedlistsample. tambahkan ("nama3");

Linkedlistsample. tambahkan ("name4");

Ini adalah bagaimana daftar Linked resultan akan terlihat seperti - [name3, name4].

Mana yang Lebih Baik untuk Mendapatkan atau Mencari Operasi?

Daftar Array membutuhkan O (1) waktu untuk menjalankan pencarian data, sedangkan daftar Linked membawa u O (n) untuk pencarian data n th . Oleh karena itu, daftar Array selalu menggunakan waktu konstan untuk pencarian data apapun, namun dalam daftar Linked, waktu yang dibutuhkan tergantung pada posisi data. Oleh karena itu, daftar Array selalu menjadi pilihan yang lebih baik untuk operasi Get atau Search.

Mana yang lebih baik untuk Penyisipan atau Operasi Penambahan?

Baik daftar Array dan Linked List mengambil waktu O (1) untuk penambahan data. Tapi jika array penuh, maka daftar Array memerlukan banyak waktu untuk mengubah ukurannya dan menyalin barang ke yang lebih baru. Dalam kasus seperti itu, daftar Linked adalah pilihan yang lebih baik.

Mana yang Lebih Baik untuk Operasi Hilang?

Operasi pengangkatan membutuhkan waktu yang hampir sama dalam daftar Array dan daftar Linked. Dalam daftar Array, operasi ini akan menghapus data dan kemudian menggeser posisi data untuk membentuk array yang lebih baru - dibutuhkan waktu O (n). Dalam daftar Linked, operasi ini melintasi data tertentu dan mengubah posisi pointer untuk membentuk daftar yang lebih baru. Waktu untuk traversal dan penghapusannya adalah O (n) di sini juga.

Mana yang Lebih Cepat?

Kita tahu bahwa daftar Array menggunakan array internal untuk menyimpan data sebenarnya. Oleh karena itu, jika ada data yang terhapus, maka semua data yang akan datang membutuhkan sebuah pergeseran memori.Jelas, ini memerlukan banyak waktu dan memperlambat segalanya. Pergeseran memori seperti itu tidak diperlukan dalam daftar Linked, karena semua yang dilakukannya adalah mengubah lokasi penunjuk. Oleh karena itu, daftar Linked lebih cepat daripada daftar Array dalam jenis penyimpanan data apa pun. Namun, ini bergantung sepenuhnya pada jenis operasi, i. e. untuk operasi Get atau Search, daftar Linked membutuhkan waktu lebih banyak dari daftar Array. Ketika kita melihat keseluruhan kinerja, kita dapat mengatakan bahwa linked list lebih cepat.

Kapan Menggunakan Daftar Array dan Daftar Linked?

Daftar Array paling sesuai untuk persyaratan data yang lebih kecil dimana memori kontinu tersedia. Tapi ketika kita berurusan dengan sejumlah besar data, ketersediaan memori terus menerus menerapkan mekanisme penyimpanan data, apakah kecil atau besar. Selanjutnya, putuskan mana yang akan dipilih - daftar Array atau daftar Linked. Anda dapat melanjutkan daftar array saat Anda hanya memerlukan penyimpanan dan pengambilan data. Tapi daftar bisa membantu Anda melampaui itu dengan memanipulasi data. Setelah Anda memutuskan seberapa sering manipulasi data diperlukan, penting untuk memeriksa jenis pengambilan data yang biasanya Anda lakukan. Bila hanya Get atau Search, maka Array List adalah pilihan yang lebih baik; untuk operasi lain seperti Penyisipan atau Penghapusan, lanjutkan dengan daftar Linked.

Mari kita lihat perbedaan dalam bentuk tabel.

S. No Konsep Perbedaan
Daftar Array Linked List
1 Penyimpanan Data Fashion Menggunakan penyimpanan data sekuensial Menggunakan penyimpanan data non-sekuensial
2 < Skema Penyimpanan Internal Mempertahankan Array Dinamis internal Mempertahankan daftar Linked 3
Penggunaan Memori Memerlukan ruang memori hanya untuk data Memerlukan ruang memori untuk data juga untuk pointer 4
Ukuran Daftar Awal Membutuhkan ruang untuk setidaknya 10 item Tidak memerlukan ruang dan kita bahkan dapat membuat daftar Linked Linked yang kosong dengan ukuran 0. 5
Data Retrieval Menghitung seperti posisi data pertama + 'n', di mana 'n' adalah urutan data dalam daftar Array Traversal dari yang pertama atau yang terakhir sampai data yang dibutuhkan diperlukan 6 < End of Data
Nilai Null menandai akhir Pointer Null menandai akhir 7 Reverse Traversal
Tidak mengizinkannya Memungkinkannya dengan bantuan descendingiterator) 8 Daftar Sintaks Penciptaan
Daftar arraylistsample = new Array Daftar (); Daftar linkedlistsample = new linkedList (); 9

Menambahkan Objek

Arraylistsample. tambahkan ("name1"); Linkedlistsample. tambahkan ("nama3"); 10

Dapatkan atau Cari

Membawa O (1) waktu dan lebih baik dalam performa Membawa O (n) waktu dan kinerjanya tergantung pada posisi data 11 REPLACE or Addition
Mengkonsumsi O (1) waktu kecuali bila array sudah penuh Mengkonsumsi O (1) waktu dalam segala situasi 12 Penghapusan atau Penghapusan
Membawa O (n) waktu < Membawa O (n) waktu 13 Kapan Pakai? Bila ada banyak operasi Get atau Search yang terlibat; ketersediaan memori harus lebih tinggi bahkan di awal
Bila ada banyak operasi Sisipkan atau Hapus, dan ketersediaan memori tidak perlu terus menerus