Qual é a diferença entre fila e deque?

Deque

também é um

Fila

estrutura de dados na qual as operações de inserção e exclusão são executadas nas duas extremidades (frontal e traseira).

Isso significa que podemos inserir nas posições dianteira e traseira e excluir das posições dianteira e traseira.

Operações na fila dupla

enqueue_front: insere um elemento na frente.

dequeue_front: exclui um elemento na frente.

enqueue_rear: insere o elemento na parte traseira.

dequeue_rear: exclui o elemento na parte traseira.

Para mais detalhes, siga o vídeo abaixo,

Fila é uma estrutura de dados que segue a política First In First Out ou Last in Last out. Imagine algumas pessoas em pé na fila. Enfileirar é o nome geral de uma operação de adição de um elemento à fila e desenfileirar é um nome geral da operação de remoção de um elemento da fila. Portanto, fila é uma estrutura de dados, enquanto enfileiramento e desenfileiramento são operações nessa estrutura de dados.

Fila é quem entra primeiro sai primeiro, ou seja, primeiro a entrar, primeiro a sair (FIFO). como uma linha na frente de um balcão de super mercado.

É usado quando há um único recurso (caixa) que precisa executar as tarefas (cobrança) de todas as solicitações (compradores em linha que desejam receber a cobrança dos itens)

Deque (pronunciado como baralho) é uma fila de duas pontas, ou seja, os elementos podem ser adicionados ou removidos em cada extremidade da linha.

É usado em situações em que há várias solicitações (clientes que desejam que seus itens sejam cobrados), mas o contrato é tal que, assim que o caixa de outro balcão conclui todas as solicitações que ele pode atender à esquerda, as solicitações (clientes) de o extremo oposto da linha. Isso ajuda a usar o recurso com eficiência e as solicitações são limpas em uma taxa mais rápida.

De um modo geral, o que você realmente quer dizer com fila? Uma linha, certo? Você saberia, agora não? Quantas vezes na sua vida você foi forçado a ficar em uma fila que mal se movia. Então, como foi? Não é a experiência. Eu sei que deve ter sido uma merda. Quero dizer o comportamento da fila?

Se você se lembra da primeira pessoa a entrar na fila, é a primeira a sair também assim que seu trabalho é concluído. Esse tipo de configuração de “primeiro a entrar, primeiro a sair” também é popularmente abreviado como

FIFO

. Portanto, com isso, estabelecemos que uma fila segue um FIFO.

Uma fila em Java não é diferente. Segue FIFO, o que significa que ele solicita elementos com base no primeiro a entrar, primeiro a sair. Portanto, o primeiro elemento é removido primeiro e o último elemento é removido por último.

Interface de fila

Como você já deve ter adivinhado, a fila em Java é uma interface que estende a interface de coleção. Existem apenas seis métodos aqui e eles são:

  • add (Objeto e)
  • oferta (Objeto e)
  • elemento()
  • olhadinha()
  • votação()
  • retirar()

Os quatro últimos métodos, a saber, element (), peek (), poll () e remove (), mais ou menos, fazem a mesma coisa - recupera o cabeçalho da fila. Desses quatro, os dois últimos, a saber: poll () e remove (), também removem a cabeça da fila.

NOTA:

Uma fila não permite a inserção de elementos nulos. Duplicatas são permitidas na fila.

Como não podemos instanciar uma interface, usaremos uma de suas classes herdadas para ver todos os métodos mencionados em um exemplo. Existem duas classes que implementam a interface da fila e são elas:

  • LinkedList
  • Fila de prioridade

Então, escrevendo:

  1. Fila q = novo LinkedList ();

ou

  1. Fila q = novo PriorityQueue ();

estariam ambos corretos.

Deque Interface

Passando para o prato principal agora. É o Deque (pronuncie como Deck porque é assim que as crianças legais) fazem a interface. É uma fila dupla. Isso é o que significa também. O que é uma fila dupla, você pergunta?

Bem, é uma fila que nos permite empurrar elementos de ambas as extremidades. Isso não parecia certo.

Quero dizer, dê uma olhada neste diagrama e veja por si mesmo:

Aqui você pode inserir um elemento de frente ou de trás. Além disso, você pode solicitar que algo seja removido da parte frontal ou traseira.

Portanto, a interface deque é basicamente uma coleção linear que permite a inserção e remoção de elementos de ambas as extremidades. É diferente da fila em java a esse respeito.

Quando veremos o exemplo, as coisas seriam muito mais claras.

Métodos de Deque

Os métodos de deque podem ser classificados em três categorias diferentes.

  • Inserir - addFirst (), offerFirst (), addLast (), offerLast ()
  • Remover - removeFirst (), pollFirst (), removeLast (), pollLast ()
  • Recuperar - getFirst (), peekFirst (), getLast (), peekLast ()

Então, para listar todos os seus métodos aqui:

  • add (Objeto e)
  • addFirst ()
  • offerFirst ()
  • addLast ()
  • offerLast ()
  • removeFirst ()
  • pollFirst ()
  • removeLast ()
  • pollLast ()
  • getFirst ()
  • peekFirst ()
  • Obtenha o último()
  • peekLast ()
  • contém (Objeto o)
  • descendingIterator ()
  • elemento()
  • iterador ()
  • oferta (Objeto e)
  • olhadinha()
  • votação()
  • pop ()
  • push (Objeto e)
  • retirar()
  • remove (Objeto o)
  • removeFirstOccurrence (Objeto o)
  • removeLastOccurrence (Objeto o)
  • Tamanho()

Como não podemos instanciar uma interface, precisamos usar algumas classes concretas para fazer isso por nós. As duas classes a seguir são úteis:

  • LinkedList
  • ArrayDeque

Portanto, optando por usar:

  1. Deque d = new LinkedList ();

ou

  1. Deque d = novo ArrayDeque ();

estaria tudo bem.

Para mais informações relacionadas a Java, visite:

Dumb IT Dude | Aprenda ao lado de um cara de TI que engana tudo