Neden Java Vector sınıfı eski veya kullanım dışı olarak kabul edilir?
Neden Java Vektör eski bir sınıf olarak kabul edilir, eski veya kullanım dışı mı?
Kullanımı eşzamanlılık ile çalışırken geçerli değil mi?
Ve istemiyorsam için el ile eşitleme nesneleri ve sadece bir iş parçacığı için güvenli toplama olmadan ihtiyacı olun temiz kopya alttaki dizinin (CopyOnWriteArrayList
), o zaman iyi kullanın Vector
?
Ne Vector
, Ne bir alt sınıfı olan Stack
, bunun yerine kullanmalıyım?
CEVAP
Vector
Her bir işlem üzerinde eşitler. O ne yapmak istediğini hemen hemen hiç.
Genellikle eşitlemek istiyorbütün sıraoperasyonların. Eşitleme bireysel işlemler hem daha güvenli (eğer üzerinde yineleme Vector
mesela, hala Alman gereken bir kilit önlemek için herkesten değişen koleksiyon aynı anda, neden olur ConcurrentModificationException
yineleme thread) ama yavaş (neden çıkar kilit defalarca kez ne zaman olacak yeter)?
Tabii ki, o da gerek yok hatta kilitleme yükü vardır.
Aslında, çoğu durumda, eşitleme için çok hatalı bir yaklaşım. GibiBay Brian Henkişaret, süslemek bir koleksiyon kullanarak çağrıları gibi Collections.synchronizedList
gerçek Vector
birleştirir hem de "yeniden boyutlandırılan dizinin" toplama uygulaması ile "senkronize her operasyon" bit başka bir örnek, kötü tasarım, dekorasyon yaklaşımı verir temiz ayrılık ile ilgilidir.
Stack
bir karşılığı olarak - Deque
/ArrayDeque
at ile başlamak bakardım.
Nasıl Eski/kullanım dışı olarak bir yö...
Neden SELECT * zararlı olarak kabul ed...
Neden statik bir yöntem olarak kabul e...
Neden uçucu yararlı birden çok iş parç...
Böyle büyük mükafat olarak bir sınıfı ...