Arraylist vs vektor
ArrayList dapat dilihat sebagai array dinamik, yang dapat tumbuh dalam ukuran. Oleh sebab itu, pengaturcara tidak perlu mengetahui saiz arraylist ketika dia mendefinisikannya. Vektor juga dapat dilihat sebagai array yang dapat tumbuh dalam ukuran. Vektor boleh diperuntukkan dengan mudah dan boleh digunakan apabila saiz storan yang diperlukan tidak diketahui sehingga runtime.
Apa itu arraylist?
ArrayList dapat dilihat sebagai array dinamik, yang dapat tumbuh dalam ukuran. Oleh itu arraylists sesuai untuk digunakan dalam situasi di mana anda tidak mengetahui saiz unsur -unsur yang diperlukan pada masa pengisytiharan. Di Java, ArrayLists hanya boleh memegang objek, mereka tidak dapat memegang jenis primitif secara langsung (anda boleh meletakkan jenis primitif di dalam objek atau menggunakan kelas pembalut jenis primitif). Secara amnya ArrayLists disediakan dengan kaedah untuk melakukan penyisipan, penghapusan dan pencarian. Kerumitan masa mengakses elemen adalah O (1), manakala penyisipan dan penghapusan mempunyai kerumitan masa O (n). Di Jawa, ArrayLists boleh dilalui menggunakan gelung foreach, iterators atau hanya menggunakan indeks. Di Jawa, ArrayLists diperkenalkan dari versi 1.2 dan ia adalah sebahagian daripada rangka koleksi Java.
Apa itu vektor?
Vektor juga merupakan pelbagai yang boleh tumbuh dalam ukuran. Vektor boleh diperuntukkan dengan mudah dan boleh digunakan apabila saiz storan yang diperlukan tidak diketahui sehingga runtime. Vektor juga hanya boleh memegang objek dan tidak dapat 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. Sama dengan ArrayList di Java, vektor boleh dilalui menggunakan gelung foreach, iterators atau hanya menggunakan indeks. Ketika datang ke Java, vektor telah dimasukkan sejak versi pertama Java.
Apakah perbezaan antara arraylist dan vektor?
Walaupun kedua -dua arraylists dan vektor sangat mirip dengan susunan dinamik yang boleh tumbuh dalam saiz, mereka mempunyai beberapa perbezaan penting. Perbezaan utama antara arraylists dan vektor adalah bahawa vektor diselaraskan manakala arraylists tidak disegerakkan. Oleh itu menggunakan arraylists dalam persekitaran multithreaded tidak akan sesuai, sementara vektor boleh digunakan dengan selamat dalam persekitaran multithreaded (kerana mereka selamat benang). Tetapi penyegerakan dalam vektor akan menyebabkan pengurangan prestasi. Oleh itu, bukan idea yang baik untuk menggunakan vektor dalam persekitaran yang berulir tunggal. Secara dalaman, kedua -dua arraylists dan vektor menggunakan tatasusunan untuk memegang objek. Apabila ruang semasa tidak mencukupi, vektor akan menggandakan saiz array dalamannya, sementara ArrayLists meningkatkan saiz array dalamannya sebanyak 50%. Tetapi apabila menggunakan kedua -dua arraylists dan vektor, dengan memberikan kapasiti awal yang sesuai, saiz semula yang tidak perlu dari array dalaman dapat dielakkan. Dalam keadaan bahawa kadar pertumbuhan data diketahui, menggunakan vektor akan lebih sesuai kerana nilai tambahan vektor dapat ditakrifkan.