Dúvida Priority Queue - SCJP

Boa noite,

Estava tentando resolver uma questão mas não consegui entender a lógica dela

Given that the elements of a PriorityQueue are ordered according to natural ordering, and: import java.util.*; public class GetInLine { public static void main(String[] args) { PriorityQueue<String> pq = new PriorityQueue<String>(); pq.add("banana"); pq.add("pear"); pq.add("apple"); System.out.println(pq.poll() + " " + pq.peek()); } }
What is the result?
A. apple pear
B. banana pear
C. apple apple
D. apple banana
E. banana banana

O meu resultado deu pear e banana. Alguém poderia me explicar a mágica :slight_smile: ?

Obrigado !

Ue , tem certeza??? a principio a resposta seria a letra D , qual a resposta da questão?? ?

PriorityQueue ordena os itens de maneira natural A,B,c ou 1,2,3 … O metodo poll () recupera e remove o elemento da cabeça , o metodo peek() recupera e não remove o elemento da cabeça .

[quote=alexmonassa]Ue , tem certeza??? a principio a resposta seria a letra D , qual a resposta da questão?? ?

PriorityQueue ordena os itens de maneira natural A,B,c ou 1,2,3 … O metodo poll () recupera e remove o elemento da cabeça , o metodo peek() recupera e não remove o elemento da cabeça .

[/quote]

Sim, desculpa. A resposta correta é D. A minha deu o resultado comentado acima.

Então posso considera-la como uma pilha ordenada ? de ordem natural? E caso seja inserido objetos que não implements Comparable ? Como será sorteada ?

Obrigado !

Temos q ver isso , tá estranho qual a versão do seu Java??

Não necessariamente, pilha é quando há aquele tipo de controle da seguinte forma: ultimo que entra é o primeiro que sai , na verdade ela poderia ser considerada mais próximo de uma fila . Só que com uma fila com prioridades.

Ai é vc q tera q implementar o comparable ou o comparator. Daí vc escolhe como irá classificar os elementos através da sua implementação (De uma dessas duas interfaces) .

De nada.

Parece bem simples o ultimo item da fila pear (pq.poll()), foi removido e mostrado, depois quando deu pq.peek() mostrou banana e nao removeu.

http://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html

[quote=Gianetti]Parece bem simples o ultimo item da fila pear (pq.poll()), foi removido e mostrado, depois quando deu pq.peek() mostrou banana e nao removeu.

http://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html[/quote]

Na vdd o pq.poll() remove o primeiro (Cabeça ) da fila? é isso que diz a documentação que vc indicou . Então o removido seria apple.