Saida 1----------------------------------------------------
package questao1;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
public class NodeQueue {
/**
* A lista onde serão armazenados os elementos.
*/
private List elements;
/**
* Construtor vazio da classe.
*/
public NodeQueue() {
elements = new ArrayList();
}
/**
* Diz se a fila está vazia.
*
* @return Um boolean que, caso tenho o valor true
, indica
* que a fila está vazia.
*/
public synchronized boolean isEmpty() {
return this.elements.isEmpty();
}
/**
* Remove o elemento que se encontra no topo da pilha e o retorna.
*
* @return O string que se encontra no topo ds pilha.
*/
public synchronized Node first() {
Node retorno = null;
if (!elements.isEmpty()) {
retorno = (Node)elements.get(0);
elements.remove(0);
}
return retorno;
}
/**
* Adiciona um elemento a fila. Ordenando-o, de acordo com o valor de sua
* heurística.
*
* @param node Um objeto qualquer do tipo Node
.
* @throws java.lang.IllegalArgumentException
* Levantada quando o argumento
* node
for null
.
*/
public synchronized void push( Node node) throws IllegalArgumentException{
if (node == null) {
throw new IllegalArgumentException();
}
this.elements.add(node);
Collections.sort(this.elements, new Utils());
}
/**
* Retorna um iterator para que se possa navegar pelos elementos desta fila.
*
* @return Iterator para que se possa navegar pelos elementos desta fila.
*/
public synchronized Iterator iterator() {
return this.elements.iterator();
}
/**
* Diz se o nó passado como parâmetro se encontra nesta fila.
*
* @param n
* @return
*/
public synchronized boolean contains( Node n) {
return this.elements.contains(n);
}
public synchronized String toString() {
StringBuffer sbuffer = new StringBuffer();
final int size = this.elements.size();
if (size > 0) {
for( int i = 0; i < size - 1; i++) {
sbuffer.append(this.elements.get(i));
sbuffer.append(", ");
}
sbuffer.append(this.elements.get(size - 1));
}
return sbuffer.toString();
}
public static synchronized void main( String[] args) {
NodeQueue queue = new NodeQueue();
// cria os nós
Node n1 = new Node(1, 1, 3);
Node n2 = new Node(1, 7, 7);
Node n3 = new Node(1, 9, 1);
Node n4 = new Node(1, 4, 8);
Node n5 = new Node(1, 2, 2);
Node n6 = new Node(1, 5, 5);
Node n7 = new Node(1, 7, 9);
queue.push(n1);
queue.push(n2);
queue.push(n3);
queue.push(n4);
queue.push(n5);
queue.push(n6);
queue.push(n7);
System.out.println("queue= " + queue);
System.out.println("Imprimindo primeiro elemento " + queue.first());
}
}