ArrayList ve Vector Arasındaki Fark

Anonim

ArrayList vs Vector

kullanılarak erişilir. Bir vektör, bazı öğeler eklendiğinde veya kaldırıldığında çalışma zamanında büyüyebilir / daralan diziler uygular. Elemanları bir tamsayı dizini kullanılarak erişilir. İki alanda - kapasite ve kapasite artırımı, vektör depolama yönetimini karakterize eder. Dört arabirim uygular:

* List

* Rasgele Erişim

* Cloneable

* Seri hale getirilebilir arabirimler

Vektörler gibi ArrayList de dört arayüz uygular. Yine, vektörler gibi boyutları çalışma süresi boyunca değişebilir. Ayrıca, kapasitesi ArrayList boyutuna eşit büyüklükte bir alana sahiptir.

Vektörler ve ArrayList öğeleri herhangi bir konumdan almak ve ayrıca öğeleri kapsayıcı sınıfının sonuna ekleme veya silme için iyidir.

API açısından, vektörlerin yanı sıra ArrayList de çok benzer. Peki ikisi arasındaki fark nerde yatıyor? Aşağıdaki hususlar bu konuda ışık tutacaktır:

1. Senkronizasyon: Vektörler senkronize edilir, ancak ArrayList değildir. Bir ArrayList öğesi ekler veya silerseniz yapısal değişiklik olarak adlandırılır. Birden fazla iş parçacığı bir ArrayList'e eşzamanlı olarak bir liste bloğuyla erişirken, o zaman birisinin listeyi harici olarak eşitlemesi gerekir. Kısacası, vektör içeriği iş parçacıklarına göre güvenlidir; oysa ArrayList'ler değildir. Gereksinim iş parçacıklı koleksiyondan bahsetmiyorsa, senkronizasyon performansı vurduğu için ArrayList'i seçmelidir. Senkronize Olmayan ArrayListler hızlıdır.

3'ten büyük ->

2. Veri büyümesi: Hem ArrayList hem de vektör öğeleri diziler halinde depolanır, ancak vektörlerin varsayılan boyutu 10'dur ve ArrayList'in varsayılan boyutu yoktur. Bir ArrayList veya vektör için bir öğe eklediğinde, her iki sınıfın da çalışamayacağı bir şans var. Böyle bir durumda, varsayılan olarak bir Vector, boyutunu iki katına çıkarırken, ArrayList boyutu% 50 oranında artar. ArrayList için mümkün olmayan vektörlerde artım değeri ayarlayabilirsiniz.

3. Elemanları çaprazlama: ArrayList, bir dizini basitçe kullanarak öğelerine erişebildiğiniz için bir avantaja sahiptir. Vektörler durumunda, öğelerini çaprazlamak için bir yineleyici oluşturmanız gerekir.

Özet:

1. Kapsayıcı sınıfı tek bir iş parçacığı veya bazı yerel değişkenle değiştirilecekse, ArrayList kullanmalısınız.

2. Kapsayıcı sınıfı birden çok iş parçacığı tarafından erişildiğinde, vektörleri kullanın, aksi takdirde el ile eşitleme yapmak zorunda kalacaksınız.

3. Artım boyutunu vektörle ve ArrayList ile belirtebiliriz.

4. Bir vektör senkronize edilir ve bir ArrayList değildir.

5. Bir vektör boyutu çift artırabilir; ArrayList% 50 arttırabilir.