15 Kasım 2017 Çarşamba

PriorityQueue Sınıfı

Giriş
Bu sınıfı kullanmak için şu satırı dahil etmek gerekir.
import java.util.PriorityQueue;
Bu sınıf priority heap kullandığı için tüm değerler sıralı değildir.

constructor

Nesnenin Comparable arayüzünü gerçekleştirmesi gerekir.
Örnek
Şöyle yaparız.. 
PriorityQueue<Integer> prq = new PriorityQueue<Integer>();
Örnek
Şöyle yaparız
PriorityQueue<Foo> pq = IntStream.rangeClosed(0, r.nextInt(10))
  .mapToObj(i -> new Foo(Integer.toString(i)))
  .collect(PriorityQueue::new, 
           PriorityQueue::offer, 
           AbstractQueue::addAll);
constructor - Comparator
Şöyle yaparız.
new PriorityQueue(new Comparator() {
  @Override
  public int compare(Object o1, Object o2) {
    return 0;
  }
});
constructor - capacity + Comparator
Şöyle yaparız.
int n = ...,
PriorityQueue<String> q = new PriorityQueue<String>(n, new Comparator<String>() {
  public int compare(String s1, String s2) {
    return ...;
  }
});
add metodu
Şöyle yaparız.
for ( int i = 10; i > 0; i-- ){  
  prq.add (i); 
} 
contains metodu
Şöyle yaparız.
int i= 30;
if(q.contains(i)) {...}
iterator metodu
Açıklaması şöyle
The Iterator provided in method iterator() is not guaranteed to traverse the elements of the priority queue in any particular order. If you need ordered traversal, consider using Arrays.sort(pq.toArray()).
offer metodu
add ile aynı. Şöyle yaparız.
int i = 30; 
q.offer(i);
peek metodu
İlk elemanı kuyruktan silmeden döner.

poll metodu
İlk elemanı alır. Kuyruk boş ise null döner. Şöyle yaparız.
Integer i = q.poll();
remove metodu
Şöyle yaparız
while (!pq.isEmpty()) 
  System.out.println(pq.remove());
size metodu
Şöyle yaparız.
int n = ...;
if (topN.size() < n) {...}
toString metodu
Nesne priority heap kullandığı için değerleri sıralı vermez. Açıklaması şöyle
PriorityQueue only returns the lowest element from its head. It doesn't sort all the elements, so if you traverse the queue with pq.toString(), elements may not appear in order. This happens because, internally, PriorityQueue.toString() uses the PriorityQueue.iterator() method ...

Hiç yorum yok:

Yorum Gönder