Perbezaan Antara Arraylist dan Vector

Anonim

Arraylist vs Vektor

Senarai array dapat dilihat sebagai array dinamik, yang dapat tumbuh saiz. Oleh sebab itu, pengaturcara tidak perlu mengetahui saiz senarai array apabila dia menentukannya. Vektor juga boleh dilihat sebagai tatasusunan yang boleh berkembang dalam saiz. Vektor boleh dengan mudah diperuntukkan dan boleh digunakan apabila saiz simpanan yang diperlukan tidak diketahui sehingga runtime.

Apakah Arraylist?

Senarai array dapat dilihat sebagai array yang dinamik, yang dapat bertambah besar. Oleh itu arrayl sangat ideal untuk digunakan dalam keadaan di mana anda tidak mengetahui saiz elemen yang diperlukan pada masa perisytiharan. Dalam Java, arraylists 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 umum arraylists disediakan dengan kaedah untuk melakukan kemasukan, penghapusan dan mencari. Kerumitan masa untuk mengakses elemen adalah o (1), sementara penyisipan dan penghapusan mempunyai kerumitan masa o (n). Di Jawa, arraylists boleh dilalui menggunakan gelung foreach, iterators atau hanya menggunakan indeks. Di Java, arraylists diperkenalkan dari versi 1. 2 dan ia merupakan sebahagian daripada Rangka Kerja Koleksi Jawa.

Apakah vektor?

Vektor juga merupakan satu array yang boleh berkembang dalam saiz. Vektor boleh dengan mudah diperuntukkan dan boleh digunakan apabila saiz simpanan yang diperlukan tidak diketahui sehingga runtime. Vektor juga hanya boleh memegang objek dan tidak boleh memegang jenis primitif. Vektor disegerakkan, oleh itu boleh digunakan dengan selamat dalam persekitaran multithreaded. Vektor disediakan dengan kaedah untuk menambah objek, memadam objek dan objek carian. Serupa dengan arraylist di java, vektor dapat dilalui menggunakan loop foreach, iterators atau hanya menggunakan indeks. Apabila ia datang ke Java, vektor telah dimasukkan sejak versi pertama Java.

Apakah perbezaan antara Arraylist dan Vektor?

Walaupun kedua arraylists dan vektor sangat mirip dengan array dinamik yang boleh bertambah besar, mereka mempunyai beberapa perbezaan penting. Perbezaan utama antara arraylists dan vektor adalah bahawa vektor disegerakkan manakala arraylists tidak disegerakkan. Oleh itu menggunakan arraylist dalam persekitaran multithreaded tidak akan sesuai, manakala vektor boleh digunakan dengan selamat dalam persekitaran multithreaded (kerana mereka adalah benang selamat). Tetapi penyegerakan dalam vektor akan menyebabkan pengurangan prestasi. Oleh itu, ia bukanlah idea yang baik untuk menggunakan vektor dalam satu persekitaran berulir. Secara dalaman, kedua-dua array dan vektor menggunakan array untuk memegang objek. Apabila ruang semasa tidak mencukupi, vektor akan menggandakan saiz susunan dalamannya, manakala arraylist meningkatkan saiz susunan dalamannya sebanyak 50%.Tetapi apabila menggunakan arraylists dan vektor, dengan memberikan kapasiti awal yang sesuai, saiz semula yang tidak diperlukan dalam array dalaman boleh dielakkan. Dalam keadaan yang kadar pertumbuhan data diketahui, menggunakan vektor akan lebih sesuai kerana nilai vektor tambahan dapat ditentukan.