Perbezaan antara arraylist dan vektor

Perbezaan antara arraylist dan vektor

Arraylist vs vektor

Vektor melaksanakan array yang boleh tumbuh/mengecut semasa runtime apabila beberapa elemen ditambah atau dikeluarkan daripadanya. Unsur -unsurnya diakses menggunakan indeks integer. Dua bidang - kenaikan kapasiti dan kapasiti, mencirikan pengurusan penyimpanan vektor. Ia melaksanakan empat antara muka:
* Senarai
* Akses rawak
* Boleh diklon
* Antara muka berseri

Arraylist, seperti vektor, juga melaksanakan empat antara muka. Sekali lagi, seperti vektor, saiznya boleh berubah semasa runtime. Juga, ia mempunyai medan yang dipanggil kapasiti yang saiznya sebesar saiz arraylist.

Kedua -dua vektor dan arraylist baik untuk mendapatkan unsur -unsur dari mana -mana kedudukan dan juga untuk memasukkan atau memadam elemen dari akhir kelas kontena.
Dari perspektif API, kedua -dua vektor serta arraylist sangat serupa. Jadi di mana betul -betul terletak perbezaan antara kedua -dua? Mata berikut akan memberi gambaran mengenai perkara ini:

1. Penyegerakan: Vektor disegerakkan tetapi arraylist tidak. Sekiranya anda menambah atau memadam elemen dari arraylist, ia disebut sebagai pengubahsuaian struktur. Apabila pelbagai benang mengakses arraylist serentak dengan blok kod mengubah suai senarai, maka seseorang perlu menyegerakkan senarai secara luaran. Singkatnya, kandungan vektor adalah benang selamat manakala arraylist tidak. Sekiranya keperluan tidak menyebut koleksi thread-selamat, maka seseorang harus memilih ArrayList sebagai penyegerakan mencecah prestasi. Senarai ArrayLon yang tidak disegerakkan pantas.

2. Pertumbuhan Data: Kedua -dua elemen ArrayList dan vektor disimpan sebagai tatasusunan, tetapi vektor mempunyai saiz lalai 10, dan ArrayList tidak mempunyai saiz lalai. Apabila seseorang menambah elemen sama ada arraylist atau vektor, ada kemungkinan bahawa salah satu kelas dapat kehabisan bilik. Dalam kes sedemikian, secara lalai vektor menggandakan saiznya sementara saiz arraylist meningkat sebanyak 50%. Anda boleh menetapkan nilai kenaikan dalam kes vektor yang tidak mungkin untuk arraylist.

3. Melintasi unsur -unsur: Arraylist mempunyai kelebihan di sini kerana anda boleh mengakses elemennya dengan hanya menggunakan indeks. Dalam kes vektor, anda perlu membuat iterator untuk melintasi unsur -unsurnya.

Ringkasan:

1.Sekiranya kelas kontena diubahsuai oleh satu benang atau pembolehubah tempatan, maka anda harus menggunakan arraylist.
2.Apabila kelas kontena diakses oleh pelbagai benang, maka gunakan vektor jika tidak, anda perlu melakukan penyegerakan manual.
3.Kita dapat menentukan saiz kenaikan dengan vektor dan dengan arraylist kita tidak boleh.
4.Vektor disegerakkan dan arraylist tidak.
5.Vektor boleh meningkatkan saiz dengan dua kali ganda; ArrayList boleh meningkatkannya sebanyak 50%.