Pure Java – 75 Generics & Collections – PriorityQueue
Merhaba Arkadaslar ,
Bu yazimda java.util.PriorityQueue sinifindan bahsedecegim. PriorityQueue , AbstractQueue i kalitmaktadir. AbstractQueue ise Queue arabirimini uygulamaktadir/implements.Queue arabirimi de Collection arabirimini kalitmaktadir.
public class PriorityQueue extends AbstractQueue implements java.io.Serializable {...} public abstract class AbstractQueue extends AbstractCollection implements Queue {...} public interface Queue extends Collection { .. }
LinkedList IS-A Queue ve PriorityQueu IS-A Queue onermeleri dogrudur.
Queue queueA = new LinkedList(); Queue queueB = new PriorityQueue();
PriorityQueue ile ilgili orneklerimize baslayalim;
import java.util.PriorityQueue; import java.util.Queue; public class PriorityQueueTest { public static void main(String[] args) { Queue pq = new PriorityQueue(); //pq.add(null); //PriorityQueue e null eleman eklenemez. pq.add(10); pq.add("10"); // java.lang.ClassCastException // java.lang.Integer cannot be cast to java.lang.String } }
PriorityQueue’e null eleman eklenemez , calisma zamaninda NullPointerException hatasi verecektir.Non-Generics bir PriorityQueue yapisinda ilk eleman Integer’sa sonrasinda farkli tipte bir eleman eklenemez elemanlarin hepsi Integer tipinde olmalidir. Aksi durumda ClassCastException hatasi verecektir.
PriorityQueue’e add veya offer metodu ile eleman eklenebilir. add metodu offer metodunu cagirmaktadir.remove metodu ile ilgili elaman silinebilir. peek metodu PriorityQueue’teki ilk elemani dondurur , element metodu peek metodunu cagirir.poll metodu PriorityQueue’teki ilk elemani dondurur fakat bu elemani siler , remove metodu poll metodunu cagirir.
import java.util.PriorityQueue; public class PriorityQueueTest2 { public static void main(String[] args) { PriorityQueue<Integer> pq = new PriorityQueue<Integer>(); pq.add(1); pq.add(100); pq.add(10); pq.add(10); pq.add(50); pq.add(12); pq.add(150); /* * add metodu offer metodunu cagirmaktadir. * public boolean add(E e) { * return offer(e); * } */ pq.offer(-20); pq.offer(-10); pq.remove(12); Integer firstElement = pq.peek(); // peek metodu PriorityQueue'teki ilk elemani dondurur fakat bu elemani // silmez. System.out.println(firstElement); Integer firstElementPoll = pq.poll(); // poll metodu PriorityQueue'teki ilk elemani dondurur fakat bu elemani // siler. System.out.println(firstElementPoll); Integer secondElementRemove = pq.remove(); // remove metodu poll metodunu cagirir. System.out.println(secondElementRemove); firstElement = pq.peek(); firstElement = pq.peek(); firstElement = pq.peek(); firstElement = pq.element(); /* * element metodu peek metodunu cagirir. * * public E element() { * E x = peek(); * if (x != null) * return x; * else * throw new NoSuchElementException(); * } */ // -20 silindigi icin peek metodu -10 donecektir ve -10 degerini silmez. // bu metodu defalarca cagirabiliriz sonuc degismez. System.out.println(firstElement); System.out.println(pq); // Arka planda Iterator calisir ve Ordered olarak yazma garantisi // yoktur. int size = pq.size(); // poll metodu elemani sildigi icin for dongusu disinda size metodu // cagrilmalidir. for (int i = 0; i < size; i++) { System.out.print(pq.poll() + " "); } System.out.println(); System.out.println(pq.peek()); // artik elaman kalmadigi icin null donecektir. } }
Yazimi burada sonlandiriyorum.
Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
OCP, Java SE 6 Programmer
OCE, Java EE 6 Web Component Developer
Leave a Reply