Olá amigos, dêem uma olhada no código abaixo e depois vejam minha discussão :
Queue q = new PriorityQueue();
q.offer(new String("he"));
q.offer(new String("hi") );
q.offer(new String("by"));
q.offer(new String("ba"));
q.offer(new String("bb"));
q.offer(new String("bc"));
//q.poll();
System.out.println(q + " " + q.size());
saída = [ba, bb, bc, hi, by, he] 6
Eu pensei que PriorityQueue por padrão colocaria os itens em ordem natural (ba, bb, bc, by, he, hi) ou se houvesse um Comparator o conjunto seria organizado de acordo com o Comparator
Não consegui também assimilar o conceito de priority-in priority-out que faz com que se eu tirar o comentario de “q.poll();” faz com que o elemento mais a esquerda seja removido resultando em [bb, bc, by, he, hi] 5. Se inserir outro “q.poll();” na linha debaixo outro item mais a esquerda é retirado resultando em [bc, by, he, hi] 4.
1 - Porque os itens não estão sendo colocados em ordem natural como (ba, bb, bc, by, he, hi)?
2 - Após ele classificar o conjunto os primeiros que entraram são os primeiros que saem quando invocamos poll() (Exemplo invocando poll com um conjunto classificado assim (ba, bb, bc, by, he, hi) serão retirados os elementos da esquerda para a direita certo?) ?
3 - Se o conceito é o primeiro que entra é o primeiro que sai porque o conjunto não foi feito na ordem que os inseri (EX: he, hi, by, ba, bb, bc )?
Pois pelo que vi no livro da kathy o conjunto terá a ordem natural ou a ordem sera de acordo com um Comparator.
Desde já agradeço a ajuda e atenção!