Java Collections – A Interface Queue

Java Collections – A Interface Queue


Este item é parte dos tópicos sequenciais sobre Java SE: Confira.


A Interface Queue:


  • Representa um conjunto de elementos classificados por prioridade de processamento.
  • Oferece métodos adicionais aos herdados de Collection:
    • Adicionar (2): add() e offer() adicionam uma elemento na fila, conforme a política de ordenação de cada implentação. add() lança exceção se a capacidade tiver sido atingida, offer() retorna false.
    • Retornar e remover (2): remove() e pool() removem, conforme a politica de ordenação de cada implentação, e retornam a cabeca da fila, remove() lança NoSuchElementException, enquanto pool() retorna null.
    • Expiar (2): element() e peek() retornam a cabeca da fila element() lança NoSuchElementException se a fila estiver vazia, e peek() retorna null.
  • Cada implementação pode variar quanto a forma de classificação dos elementos, mas tipicamente usam FIFO (1º que entra – 1 que sai/ First in – First Out), mas também, LIFO (Último que entra – 1 que sai/ Last in – First Out), ordem natural, ou um Comparator fornecido.
  • Não permitem a inserção de valores nulos, embora LinkedList seja uma exceção. LinkedList foi retro-adaptada para implementar Queue e recomenda-se evitar null, um vez que que ele é o tipo retorno padrão para fila vazia.
  • A maioria das implementações não implementa equals e hashCode específicos.


As Implementações:

PriorityQueue:

  • Representa uma fila onde a prioridade é definida pela ordem natural dos elementos ou por um comparator fornecido. *Portanto os elementos precisam implementar Comparable.
  • Implementa todos os métodos adicionados de List.
  • Os elementos são ordenados conforme o construtor usado. Pode ser natural ou através de um Comparator fornecido.
  • Não Permite valores nulos.
  • Não é sincronizado.

// Exemplo:

Saída:

//Traversing1:

Starting client serving (clients pending= 5):
> Serving0: Client Carmem Miranda
> Serving1: Client John Wayne
> Serving2: Client Pedro de Lara
> Serving3: Client Steve Wonder
> Serving4: Client Wolfgan A.M.

Ending client serving (clients pending= 0).

//Traversing2:

Starting client serving (clients pending= 5):
> Serving: Client Carmem Miranda
> Serving: Client John Wayne
> Serving: Client Pedro de Lara
> Serving: Client Steve Wonder
> Serving: Client Wolfgan A.M.

Ending client serving (clients pending= 0).

BUILD SUCCESSFUL (total time: 0 seconds)


LinkedList:

  • É um híbrido que implementa ao mesmo tempo as interfaces List e Queue.
  • Os elementos são ordenados pelo critério PEPN – Primeiro que entra, Primeiro que sai (do inglês First in – First Out).
  • Permite valores nulos, apesar de não recomendado.
  • Não é sincronizado.

// Exemplo:

Saída:

//Traversing1:

Starting client serving (clients pending= 5):
> Serving0: Client John Wayne
> Serving1: Client Steve Wonder
> Serving2: Client Carmem Miranda
> Serving3: Client Pedro de Lara
> Serving4: Client Wolfgan A.M.

Ending client serving (clients pending= 0).

//Traversing2:

Starting client serving (clients pending= 5):
> Serving: Client John Wayne
> Serving: Client Steve Wonder
> Serving: Client Carmem Miranda
> Serving: Client Pedro de Lara
> Serving: Client Wolfgan A.M.

Ending client serving (clients pending= 0).

BUILD SUCCESSFUL (total time: 0 seconds)


[sc:signature_df]