"Enter"a basıp içeriğe geçin

Vector, Stack ve Queue

 

Vector

Vector ile ArrayList benzer yapıya sahip veri tipleridir. İkisi de List Interface’inden türemiştir. Aralarındaki tek fark, vector sınıfında senkronizasyon özelliği bulunmaktadır.

Threat işlemlerinde aynı anda aynı eleman üzerinden işlem yapılma ihtimali olduğundan, vector sınıfında senkronize etme fonksiyonu bulunur. Yani vector’ler senkronizasyon sağlar. Ancak bu durum performans kaybına neden olur.

Eğer threat kullanacaksak vector tercih ederiz. Diğer durumlarda ArrayList kullanırız.

FonksiyonTanımı
add(Object obj)Vector’e yeni eleman ekler
add(int index, Object obj)Verilen index’e eleman ekler
addAll(Collection c)Bir koleksiyondaki tüm elemanları vector’e ekler
addAll(int index, Collection c)Belli bir indexten itibaren ekler
capacity()Mevcut kapasiteyi gösteririr.
clear()Vektörü temizler
clone()Vektörün klonunu oluşturur.
contains(Object o)Ver,len elemanı vektörün içinde arar ve eğer eleman mevcutsa true döndürür
containsAll(Collection c)Bir koleksiondaki tüm elemanlar mevcutsa true döndürür
copyInto(Object []array)Girilen array’in içeriğini vektöre kopyalar
elementAt(int index)Girilen elemanın bulunduğu ilk indexi döndürür.
ensureCapacity(int minCapacity)Kapasiteyi ayarlar. Eğer önceki kapasiteden daha küçük bir değer girilirse son elemanlar silinir
equals()İki nesnenin eiştliğini karşılaştırır.
firstElement()İlk elemanı döndürür.
get(int index)Verilen indexteki elemanı döndürür.
hashCode()hash kodu oluşturur.
indexOf(Object o)Girilen elemanın vektördeki ilk konumubu döndürür.
indexOf(Object o, int index)Belli bir indexten sonraki ilk bulunduğu yeri döndürür.
insertElementAt(Object o, int index)Girilen elemanı girilen index’e yerleştirir.
isEmpty()Vektörün boş olup olmadığına bakar.
iterator()Bir iteratör oluşturur.
lastElement()Son elemanı döndürür.
lastIndexOf(Object o)Girilen elemanın sondan ilk bulunduğu yerin indexini döndürür.
lastIndexOf(Object o, int index)Girilen indexten öncesini arar.
listIterator()List iteratörü döndürür.(ilk elemanı tutar)
listIterator(int index)Girilen index için list iteratör döndürür.
remove(int index)Girilen indexteki elemanı siler
remove(Object o)Girilen elemanın ilk göründüğü yeri siler.
removeAll(Collection c)Bir koleksiyonda bulunan tüm elemanları vektörden siler.
removeAllElements()Removes all components from this vector and sets its size to zero.
set(int index, Object o)Girilen indexteki elemanı girilen eleman ile değiştirir.
setSize(int newSize)Sets the size of this vector.
size()İçerdiği eleman sayısını döndürür.
subList(int fromIndex, int toIndex)Girilen iki index arasındaki elemanları başka bir listeye atar.
toArray()Vektörü diziye çevirir.
toString()Listeyi stringe çevirir. Bu metod sayesinde sout() fonksiyonunda vektörümüzü yazdırabiliriz.
trimToSize()Vektörün kapasitesini vektörün boyutuna eşitler.

Kaynak:https://www.geeksforgeeks.org/stack-class-in-java/

Stack

Stack ve Queue sınıflarını kendi isteğimize göre dizi veya linkedList olarak oluşturabiliriz. Ancak java collcetion framework’de stack sınıfı vector sınıfından türetirmiştir. Bu yüzden vector özelliği taşımaktadır.

Stack’lerde ekleme metodumuz add veya push’tur. st.push(eleman) diyerek eleman ekleyebiliriz.

Çıkarma fonksiyonumlarımızdan biri peek’dir.

st.peek(); dersek, stack’e son eklenen elemanı kullanır. yani sout(st.peek();) dediğimizde son eklenen elemanı yazdırır. Ama bu eleman listeden silinmez.

st.pop(); metodu ise elemanı kullanmakla birlikte listeden de siler. Böylece son giren eleman listeden silinmiş olur.

while döngüsü ve empty komutu ile listeyi boşaltabiliriz.

Stack sınıfı vektörde olmayan şu özellikleri içerir:

FonksiyonTanım
empty()Liste boşsa true, doluysa false döndürür.
peek()Stack’teki son elemanı, silmeden döndürür.
pop()Son eklenen elemanı döndürür. ve siler.
push(Object element)Eleman ekler
search(Object element)Girilen elemanı stack’te arar.

Queue

Queue veri yapısında İlk giren ilk çıkar. Yani aynı bir sıra gibidir. Zaten Queue kelimesinin türkçe anlamı da kuyruktur. Ekleme fonksiyonu kullandığımızda elemen sona eklenir. Çıkarma fonksiyonunu kullandığımızda ise kuyruğun başındaki eleman kullanılacak ve çıkacaktır.

LinkedList sınıfı hem List hem de Queue interface’inden türemiştir. Bir LinkedList nesnesini List referansı ile turarsak, daha önce gördüğümüz gibi List prensipi ile çalışır.

Ancak eğer LinkedList nesnesini Queue referansı ile tutarsak, bu sefer Queue prensipi ile çalışacaktır.

Queue nesnesinde ekleme metodumuz add’dir. qu.add(eleman); dediğimizde, kuyruğun sonuna elemanı ekler.

offer() metodu da eleman ekler. Farkları ise, add ile eklediğimizde hata oluşursa exception fırlatacak ve programı sonlandıracaktır. offer metodu ise true-false döndürür. Bu sayede hata kontrolü yapabiliriz.

çıkarma metodumuz da stack’te olduğu gibi 2 tanedir.

peek() ile çıkarma yaparsak kuyruğun başındaki eleman döner ama listeden silinmez.
poll() fonksiyonu ise, kuyruğun başındaki elemanı listeden silecektir.

 

Priority Queue

Priority Queue (öncelik kuyruğu) sınıfı Queue interface’inden türemekle beraber, bildiğimiz Queue sınıfındaki gibi ilk giren ilk çıkar mantığı içermez. Her elemanın bir öncelik değeri bulunur. Ve önceliği en yüksek olan eleman kuyruktan ilk çıkar.

Integer veri tipinde öncelik en küçük sayıdadır. String’de ise sözlükte ilk gelen yüksek önceliklidir.

Yeni eklenen elemanın önceliği önceki elemanların arasında ise, kaydırma işlemi yapılarak eleman doğru konuma alınır.

Ekleme-çıkarma metodlarının kullanım şekli Queue ile aynıdır.

For döngüsüyle çalıştırdığımızda sırasız çıkar. while ile sırayla çıkarma işlemi yapmamız gerekir.

Kendi sınıfımızın nesnelerini Priority Queue ile tutmak istersek, önceliğin belirlenebilmesi için sınıfımızda comperable interface’ini implement etmemiz gerekir. Ayrıca yazdırmak için toString metodunu da eklememiz gerekir.

    Bir cevap yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir