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());
Top of the stack: 5
Removing the element: 5
Top of the stack: 3
imagem mental:
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.
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.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.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.