• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

question regarding PriorityQueue

 
Ranch Hand
Posts: 198
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
i got this question from the SCJP 5 book. can some one please explain to me why the value 10 has been put in the line of the code which i have commmented out below. and how does the comapre method check the Integers to determine that they must go in reverse order? i just do not understand the logic behind the compare method. please help

import java.util.*;

class pq {
static class pqsort implements Comparator<Integer>{
public int compare(Integer one, Integer two){
return two - one;

}

}

public static void main(String ar[]){

int []ia = {1,5,3,7,6,9,8};
PriorityQueue<Integer> pq1 = new PriorityQueue<Integer>();
for(int x:ia)
pq1.offer(x);
for(int x: ia)
System.out.print(pq1.poll()+" ");

System.out.println("");

pqsort pqs = new pqsort();
//PriorityQueue<Integer> pq2 = new PriorityQueue<Integer>(10,pqs);

for(int x: ia)
pq2.offer(x);
System.out.println("size"+ pq2.size());
System.out.println("peek "+ pq2.peek());
System.out.println("size "+pq2.size());
System.out.println("poll "+pq2.poll());
System.out.println("size "+pq2.size());

for(int x: ia)
System.out.println(pq2.poll());
}
}
thank you
Dinuka Arseculeratn
 
Sheriff
Posts: 11343
Mac Safari Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Dinuka Arseculeratne:
...can some one please explain to me why the value 10 has been put in the line of the code which i have commmented out below. and how does the comapre method check the Integers to determine that they must go in reverse order? ...


The API documentation for Comparator's compare method says it returns "a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second."

In this example, compare(Integer one, Integer two) simply returns two - one. Therefore, if one has a smaller value than two, the method will return a positive result indicating that one is "greater than" two. In other words, the smaller value will be ordered after the larger value.

The 10 specified in the constructor is just an initial capacity for this PriorityQueue. (See API documentation.)
 
Greenhorn
Posts: 26
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
maybe if you had a look around the forum (hint, search function near the top of the page), you might find another topic discussing the exact same problem, i.e.

https://coderanch.com/t/258350/java-programmer-SCJP/certification/comparator-someone-answer

oh, and feel free to try and format your code as well. It makes it much easier for anyone trying to help you. You help us, we help you.

Sok
 
marc weber
Sheriff
Posts: 11343
Mac Safari Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
(Instructions for using Code Tags are here.)
 
Consider Paul's rocket mass heater.
reply
    Bookmark Topic Watch Topic
  • New Topic