Stack.

Serie - Fundamentos de Estrutura de Dados Elementar com Java.


Pilha. Como funciona a Stack.

  A Stack, como o próprio nome sugere, é uma pilha. Essa estrutura clássica segue o princípio LIFO (Last-In-First-Out), onde o último elemento a entrar é o primeiro a sair.

  Imaginem como uma pilha de pratos. Quando você adiciona um novo prato, ele se torna o topo da pilha. Se precisar remover um prato, você retira o que está no topo, pois foi o último a ser adicionado.

  É a mesma forma que a Stack opera. É uma escolha lógica quando a ordem de entrada e saída é crucial. Se você está lidando com dados onde a temporalidade importa, a Stack é a ferramenta certa.

  exemplo em código:

var numbersStack = new Stack<Integer>();
numbersStack.push(2);
numbersStack.push(3);
numbersStack.push(5);
System.out.println("Top of the stack: " + numbersStack.peek());
System.out.println("Removing the element: " + numbersStack.pop());
System.out.println("Top of the stack: " + numbersStack.peek());
Output (clique)

  Top of the stack: 5
  Removing the element: 5
  Top of the stack: 3

  imagem mental:

  Stack Java

  No entanto, saiba que na atualidade é recomendado mais o uso de Class que derivem diretamente de Deque para quando precisar de um Stack. Isso porque tem as mesmas funcionalidades, são mais flexíveis e mais performáticas.

Vantagens e Desvantagens

Vantagens
  • 1 - Implementa uma estrutura de pilha de forma simples e eficiente. LIFO - Last In, First Out.
  • 2 - Operações de empilhamento e desempilhamento são rápidas.
Desvantagens
  • 1 - Limitado na flexibilidade em comparação com outras estruturas mais gerais, como ArrayList ou LinkedList.
  • 2 - Eistem estruturas que fazem o mesmo trabalho e de forma mais rápida, como o ArrayDeque.

Uso comum

  Rastreamento de chamadas de função em algoritmos recursivos ou controle de navegação em um navegador web.

  Cenário de uso: Um navegador web utiliza uma pilha para armazenar a história de navegação do usuário, permitindo a navegação de volta (undo) e para frente (redo) nas páginas visitadas.