ArrayList ve Vector Arasındaki Fark

ArrayList ve Vektör

Bir vektör, bazı öğeler eklendiğinde veya ondan kaldırıldığında çalışma zamanında büyüyebilen / daralan diziler uygular. Öğelerine bir tamsayı dizini kullanılarak erişilir. İki alan - kapasite ve kapasite artışı, vektör depolama yönetimini karakterize eder. Dört arayüz uygular:
* Liste
* Rasgele erişim
* Klonlanabilir
* Serileştirilebilir arayüzler

ArrayList, tıpkı vektörler gibi dört arayüz de uygular. Yine, vektörler gibi, boyutu çalışma zamanı sırasında değişebilir. Ayrıca, boyutu ArrayList'in boyutu kadar büyük olan kapasite adı verilen bir alana sahiptir..

Hem vektörler hem de ArrayList öğeleri herhangi bir konumdan almak ve kap sınıfının sonundan öğeleri eklemek veya silmek için iyidir.
API perspektifinden bakıldığında, her iki vektör ve ArrayList birbirine çok benzer. Peki ikisi arasındaki fark tam olarak nerede yatıyor? Aşağıdaki hususlar bu konuya ışık tutacaktır:

1. Senkronizasyon: Vektörler senkronize edilir ancak ArrayList değildir. Bir ArrayList öğesine öğe ekler veya bu öğeleri silerseniz, yapısal değişiklik olarak adlandırılır. Birden çok iş parçacığı, listeyi değiştiren bir kod bloğuyla aynı anda bir ArrayList'e erişiyorsa, listenin harici olarak senkronize edilmesi gerekir. Kısacası, vektör içerikleri iş parçacığı için güvenli iken ArrayList'ler güvenli değildir. Gereksinim iş parçacığı için güvenli koleksiyondan bahsetmiyorsa, senkronizasyon performansa ulaştığından ArrayList'i tercih etmelisiniz. Senkronize edilmemiş ArrayLists hızlı.

2. Veri artışı: Hem ArrayList hem de vektör öğeleri diziler olarak saklanır, ancak vektörlerin varsayılan boyutu 10'dur ve ArrayList'in varsayılan boyutu yoktur. Biri bir ArrayList ya da vektöre bir öğe eklediğinde, her iki sınıfın da odadan çıkma olasılığı vardır. Böyle bir durumda, ArrayList boyutu% 50 artarken varsayılan olarak bir Vector boyutunu iki katına çıkarır. ArrayList için mümkün olmayan vektörler için bir artış değeri ayarlayabilirsiniz.

3. Öğeleri kaydırma: ArrayList'in burada bir avantajı vardır, çünkü öğelerine sadece bir dizin kullanarak erişebilirsiniz. Vektörler durumunda, öğelerini çaprazlamak için bir yineleyici oluşturmanız gerekir.

Özet:

Konteyner sınıfı tek bir iş parçacığı veya yerel bir değişken tarafından değiştirilecekse, bir ArrayList kullanmalısınız.
2.Konteyner sınıfına birden çok iş parçacığı tarafından erişildiğinde, vektörleri kullanın, aksi takdirde manuel senkronizasyon yapmanız gerekir..
Artış boyutunu vektörle belirleyebiliriz ve ArrayList ile yapamayız.
Bir vektör senkronize edilir ve bir ArrayList değildir.
5. bir vektör boyutunu iki katına çıkarabilir; ArrayList bunu% 50 artırabilir.