Giriş
Şu satırı dahil ederiz.
Şu satırı dahil ederiz.
import java.util.Stack;
Açıklaması şöyle.The Stack class is a legacy class from the Java 1.0 days, prior to the introduction of the collections framework.Bu sınıf yerine ArrayDeque, ConcurrentLinkedDeque, LinkedBlockingDeque, LinkedList kullanılabilir. Açıklaması şöyle.
Java's Stack is a very old class, introduced back in JDK 1.0. It extends Vector, and all it's data manipulation methods are synchronized, creating a very sizeable performance overhead. While it isn't officially deprecated, it's outdated, and you really shouldn't be using it in this day and age. The modern ArrayDeque provides the same functionality without the synchronization overhead.Bu sınıf List arayüzünden kalıtır. listIterator metodu ile ileri ve geri dolaşabilme imkanı sağlar.
Bu sınıf Vector'den kalıtır. Bu yüzden iterator ile dolaşınca Vector gibi çıktı verir.
Örnek
Elimizde şöyle bir kod olsun. Çıktı olarak 1,2,3,4 alırız.
Stack<Integer> s = new Stack<>();
s.push(1);
s.push(2);
s.push(3);
s.push(4);
s.stream().forEach( x-> System.out.print(x + " "));
constructorŞöyle yaparız.
Stack<Foo> stack=new Stack<Foo>();
isEmpty metoduŞöyle yaparız.
while (!stack.isEmpty())
{
stack.pop();
}
listIterator metoduListIterator nesnesi döner. Şöyle yaparız.
Stack<Character> var = new Stack<Character>();
... add elements to stack...
for(ListIterator<Character> i = var.listIterator(); i.hasNext();){
if(i.next() == '*'){
i.remove();
i.previous();
...
}
}
pop metoduŞöyle yaparız. Eğer stack boş ise EmptyStackException fırlatır.
Foo f= stack.pop();
push metoduŞöyle yaparız.
stack.push(myFoo);
Stack'i Tersine Çevirmek
Stack'i tersine çevirerek Queue haline getirebiliriz. Şöyle yaparız.
İki tane stack kullanarak Queue haline getirebiliriz. Şöyle yaparız.
Stack'i tersine çevirerek Queue haline getirebiliriz. Şöyle yaparız.
public class SimulatedQueue<E> {
Stack<E> stack = new Stack<E>();
public void insert(E elem) {
if (!stack.empty()) {
E topElem = stack.pop();
insert(elem);
stack.push(topElem);
}
else
stack.push(elem);
}
public E remove() {
return stack.pop();
}
}
public class Queue<E>
{
private Stack<E> inbox = new Stack<E>();
private Stack<E> outbox = new Stack<E>();
public void queue(E item) {
inbox.push(item);
}
public E dequeue() {
if (outbox.isEmpty()) {
while (!inbox.isEmpty()) {
outbox.push(inbox.pop());
}
}
return outbox.pop();
}
}
Hiç yorum yok:
Yorum Gönder