Senarai Tatasusunan lwn Vektor
Senarai tatasusunan boleh dilihat sebagai tatasusunan dinamik, yang boleh membesar dalam saiz. Atas sebab ini, pengaturcara tidak perlu mengetahui saiz senarai tatasusunan apabila dia mentakrifkannya. Vektor juga boleh dilihat sebagai tatasusunan yang boleh membesar dalam saiz. Vektor boleh diperuntukkan dengan mudah dan boleh digunakan apabila saiz storan yang diperlukan tidak diketahui sehingga masa jalan.
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. Di Java, senarai tatasusunan telah diperkenalkan dari versi 1.2 dan ia merupakan sebahagian daripada Rangka Kerja Koleksi Java.
Apakah itu Vektor?
Vektor juga merupakan tatasusunan yang boleh membesar dalam saiz. Vektor boleh diperuntukkan dengan mudah dan boleh digunakan apabila saiz storan yang diperlukan tidak diketahui sehingga masa jalan. Vektor juga hanya boleh memegang objek dan tidak boleh memegang jenis primitif. Vektor disegerakkan, oleh itu boleh digunakan dengan selamat dalam persekitaran berbilang benang. Vektor disediakan dengan kaedah untuk menambah objek, memadam objek dan mencari objek. Sama seperti senarai tatasusunan dalam java, vektor boleh dilalui menggunakan gelung foreach, iterator atau hanya menggunakan indeks. Apabila bercakap tentang Java, vektor telah disertakan sejak versi pertama Java.
Apakah perbezaan antara Arraylist dan Vektor?
Walaupun kedua-dua senarai tatasusunan dan vektor sangat serupa dengan tatasusunan dinamik yang boleh membesar dalam saiz, mereka mempunyai beberapa perbezaan penting. Perbezaan utama antara senarai tatasusunan dan vektor ialah vektor disegerakkan manakala senarai tatasusunan tidak disegerakkan. Oleh itu menggunakan senarai tatasusunan dalam persekitaran berbilang benang tidak sesuai, manakala vektor boleh digunakan dengan selamat dalam persekitaran berbilang benang (kerana ia selamat untuk benang). Tetapi penyegerakan dalam vektor akan menyebabkan pengurangan dalam prestasi. Oleh itu, bukanlah idea yang baik untuk menggunakan vektor dalam persekitaran berulir tunggal. Secara dalaman, kedua-dua senarai tatasusunan dan vektor menggunakan tatasusunan untuk memegang objek. Apabila ruang semasa tidak mencukupi, vektor akan menggandakan saiz tatasusunan dalamannya, manakala senarai tatasusunan meningkatkan saiz tatasusunan dalamannya sebanyak 50%. Tetapi apabila menggunakan kedua-dua senarai tatasusunan dan vektor, dengan memberikan kapasiti awal yang sesuai, saiz semula tatasusunan dalaman yang tidak perlu boleh dielakkan. Dalam keadaan kadar pertumbuhan data diketahui, menggunakan vektor adalah lebih sesuai kerana nilai tambahan vektor boleh ditakrifkan.