Array vs Arraylist
Array ialah struktur data yang paling biasa digunakan untuk menyimpan koleksi elemen. Kebanyakan bahasa pengaturcaraan menyediakan kaedah untuk mengisytiharkan tatasusunan dan mengakses elemen dalam tatasusunan dengan mudah. Senarai tatasusunan boleh dilihat sebagai tatasusunan dinamik, yang boleh membesar dalam saiz. Atas sebab ini, pengaturcara tidak perlu mengetahui saiz senarai tatasusunan semasa dia mentakrifkannya.
Apakah Tatasusunan?
Ditunjukkan dalam rajah 1, ialah sekeping kod yang biasanya digunakan untuk mengisytiharkan dan memberikan nilai kepada tatasusunan. Rajah 2 menggambarkan rupa tatasusunan dalam ingatan.
nilai int[5]; nilai[0]=100; nilai[1]=101; nilai[2]=102; nilai[3]=103; nilai[4]=104; |
Rajah 1: Kod untuk mengisytiharkan dan memberikan nilai kepada tatasusunan
100 | 101 | 102 | 103 | 104 |
Indeks: 0 | 1 | 2 | 3 | 4 |
Rajah 2: Tatasusunan disimpan dalam memori
Kod di atas, mentakrifkan tatasusunan yang boleh menyimpan 5 integer dan ia diakses menggunakan indeks 0 hingga 4. Satu sifat penting tatasusunan ialah, keseluruhan tatasusunan diperuntukkan sebagai satu blok memori dan setiap elemen mendapatnya ruang sendiri dalam tatasusunan. Sebaik sahaja tatasusunan ditakrifkan, saiznya ditetapkan. Jadi jika anda tidak pasti tentang saiz tatasusunan pada masa penyusunan, anda perlu menentukan tatasusunan yang cukup besar untuk berada di bahagian yang selamat. Tetapi, kebanyakan masa, kita sebenarnya akan menggunakan bilangan elemen yang kurang daripada yang telah kita peruntukkan. Jadi sejumlah besar ingatan sebenarnya terbuang. Sebaliknya jika "tatasusunan yang cukup besar" sebenarnya tidak cukup besar, program akan ranap.
Apakah itu Arraylist?
Senarai tatasusunan boleh dilihat sebagai tatasusunan dinamik, yang boleh membesar dalam saiz. Oleh itu senarai tatasusunan adalah sesuai untuk digunakan dalam situasi di mana anda tidak mengetahui saiz elemen yang diperlukan pada masa pengisytiharan. Di Java, senarai tatasusunan hanya boleh memegang objek, mereka tidak boleh memegang jenis primitif secara langsung (anda boleh meletakkan jenis primitif di dalam objek atau menggunakan kelas pembalut jenis primitif). Secara umumnya senarai tatasusunan disediakan dengan kaedah untuk melakukan penyisipan, pemadaman dan carian. Kerumitan masa untuk mengakses elemen ialah o(1), manakala sisipan dan pemadaman mempunyai kerumitan masa o(n). Di Java, senarai tatasusunan boleh dilalui menggunakan gelung foreach, iterator atau hanya menggunakan indeks.
Apakah perbezaan antara Tatasusunan dan Senarai Tatasusunan
Walaupun tatasusunan dan senarai tatasusunan adalah serupa dalam erti kata kedua-duanya digunakan untuk menyimpan koleksi elemen, ia berbeza dalam cara ia ditakrifkan. Saiz tatasusunan perlu diberikan apabila tatasusunan ditakrifkan, tetapi anda boleh menentukan senarai tatasusunan tanpa mengetahui saiz sebenar. Anda boleh menambah elemen pada senarai tatasusunan selepas ia ditakrifkan dan ini tidak boleh dilakukan dengan tatasusunan. Tetapi dalam Java, tatasusunan tidak boleh menyimpan jenis primitif, tetapi tatasusunan boleh digunakan untuk menyimpan jenis primitif. Tetapi jika anda memerlukan struktur data yang boleh mengubah saiznya, senarai tatasusunan akan menjadi pilihan terbaik.