Vector
, Java 1.0'dan eski bir koleksiyon sınıftır. Java 1.2'de (uzun zaman önce!), Vector
ve Hashtable
eski sınıflarının yerini alması amaçlanan ArrayList
ve HashMap
gibi yeni koleksiyon sınıflarını içeren Collections Framework eklenmiştir.
Daha önce de söylediğim gibi, eski koleksiyon sınıfları birçok uygulama için gereksiz olan yerleşik bir senkronizasyona sahipti. Senkronizasyonun bir performans yükü vardır, bu yüzden gerekli değilse onu kullanmamalısınız.
Bazı durumlarda (programınız çok iş parçacıklı olduğunda ve birden fazla iş parçacığı aynı verilere eriştiğinde) koleksiyonlarınızı senkronize etmeniz gerekir. Bazı insanlar daha sonra eski Vector
veya Hashtable
sınıfları kullanmak istiyorsunuz, ancak daha iyi bir yolu örneğin ArrayList
bir ile bir senkronizasyon sarmalayıcı kullanmaktır:
// Your standard, unsynchronized list
List<String> data = new ArrayList<String>();
// Use this to put it into a synchronization wrapper
List<String> syncedData = Collections.synchronizedList(data);
fazla bilgi için Collections.synchronizedList()
(ve diğer yöntemler) API belgelerine bakın.
'Vector''in kullanımdan kaldırılmadığını merak ediyor. Sanırım bire bir değiştirme olmadığı için bunu yapmadılar. – skaffman
Bunun Hashtable için de geçerli olduğunu unutmayın - bunun yerine HashMap kullanın. –
@skaffman 'CopyOnWriteArrayList', bir thread'list' List' uygulaması olduğu sürece birebir yerine bir ya da daha az yer değiştirir. Çoğu kullanım için, 'CopyOnWriteArrayList', 'Vector' –