Yığınlar vektörü uzatırsa, bu yığınların senkronize edildiği anlamına mı geliyor? Vektör Java docs yeni koleksiyon uygulamaları aksineYığını genişletir Vector
den
Not Vektör senkronize edilir.
Yığınlar vektörü uzatırsa, bu yığınların senkronize edildiği anlamına mı geliyor? Vektör Java docs yeni koleksiyon uygulamaları aksineYığını genişletir Vector
den
Not Vektör senkronize edilir.
Evet, senkronize edilir, ancak Javadocs göre bunun yerine bir Stack
bir Deque
tercih edilmelidir. Stack
Javadocs kaynaktan
:
LIFO küme işlemleri daha tam ve tutarlı bir dizi Bu sınıfta tercih kullanılmalıdır deque arabirim ve uygulamaları tarafından sağlanan olup. Örneğin:
Deque<Integer> stack = new ArrayDeque<Integer>();
Evet, Vector miras yöntemler Yığın senkronize kalır. Kendi Stack yöntemleri peek, pop, arama Stack içinde senkronize edilir. Stack.push ve Stack.empty yöntemler senkronize edilmez, ancak
public boolean empty() {
return size() == 0;
}
public E push(E item) {
addElement(item);
return item;
}
iki yöntem de Vector'ün senkronize yöntemler dolayısıyla Stack.empty ve Stack.push parçacığı için güvenlidir çağrıda bulunuyorlar.
+ 1'in bir uygulamasıdır. Bence bu doğru. Vektörü genişletmenin kendisini yığın haline getirdiğini düşünmüyorum. Yöntemler nasıl tanımlanır. – kosa
Doğru, senkronize edilebilir bir sınıf değil, yöntemleri –
ve şüphe durumunda [koda bakınız] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/Stack.java) (* openjdk only;)) – soulcheck
Neden LinkedList'i kullanmıyorsunuz? ArrayDeque, Deque uygulamasının bir uygulamasıdır, ancak Vector, List –