A classe Java Stack estende a classe Vector. Ele permite que você crie novos elementos, visualize um elemento na pilha, atualize um elemento na pilha e exclua todos os elementos da pilha. Empilha os dados do processo em uma ordem FILO (primeiro a entrar, último a sair). Isso significa que você só pode adicionar ou remover itens do topo de uma pilha.
A estrutura de dados da pilha tem cinco métodos principais. No entanto, a classe Java Stack também tem acesso a mais de 40 outros métodos, herdados da classe Vector.
Criando uma pilha em Java
A classe Pilha tem um único construtor que permite criar uma pilha vazia. Cada pilha tem um argumento de tipo, que determina o tipo de dados que ele armazenará.
importar java.util. Pilha;
públicoclassePrincipal{
públicoestáticovazioa Principal(String[] argumentos){
//cria uma pilha
PilhaClientes = novo Pilha ();
}
}
O código acima cria uma estrutura de dados Stack chamada Clientes que armazena valores de String.
Preenchendo uma pilha
Um dos cinco métodos principais da classe Stack é o
Empurre() método. Ele pega um único item que tem o mesmo tipo de dados que o Stack e o empurra para o topo do Stack.//preenche uma pilha
Customers.push("Jane Doe");
Customers.push("John Doe");
Customers.push("Patrick Williams");
Clientes.push("Paul Smith");
Clientes.push("Erick Rowe");
Clientes.push("Ella Jones");
Customers.push("Jessica Brown");
O código acima preenche a Pilha de Clientes com sete itens. Ele empurra cada novo item para o topo da pilha. Então, o item no topo da pilha de clientes é Jessica Brown. E você pode confirmar isso usando o Stack olhadinha() método. o olhadinha() método não recebe argumentos. Ele retorna o objeto no topo da pilha sem removê-lo.
// visualiza o objeto no topo de uma pilha
System.out.println (Customers.peek());
O código acima retorna a seguinte saída para o console:
Jessica Brown
Exibir os itens em uma pilha
A estrutura de dados da pilha é bastante restritiva na forma como permite que você interaja com seus dados. Você deve usar principalmente uma pilha por meio de seu item mais alto. No entanto, você também pode usar métodos herdados da classe Vector para acessar elementos arbitrários. Esses métodos incluem elementAt e removeElementAt.
A maneira mais fácil de obter uma visão geral do conteúdo de uma pilha é simplesmente imprimi-la. Passe um objeto Stack para System.out.println e o método toString() do Stack produzirá um bom resumo:
// visualiza todos os elementos de uma pilha
System.out.println (Clientes);
O código acima imprime a seguinte saída no console:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella Jones, Jessica Brown]
Procurando uma posição de item em uma pilha
Se você conhece um item na Pilha, pode identificar sua posição de índice ou sua posição relativa ao topo da Pilha. o índice de() O método pega um item na pilha e retorna sua posição de índice. Esteja ciente de que um Stack começa a indexar seus itens em zero.
// encontra uma posição de índice de item
System.out.println (Customers.indexOf("Jane Doe"));
O código acima imprime a seguinte saída no console:
0
o procurar() é um dos métodos primários da classe Stack. Ele retorna uma posição do item em relação ao topo da pilha, onde o item no topo da pilha tem a posição número um.
System.out.println (Customers.search("Jane Doe"));
O código acima imprime a seguinte saída no console:
7
Se você fornecer o procurar() ou o índice de() métodos com um item que não está no Stack, eles retornarão um negativo.
System.out.println (Customers.search("Elsa Doe"));
System.out.println (Customers.indexOf("Elsa Doe"));
O código acima imprime a seguinte saída no console:
-1
-1
Atualizando itens em uma pilha
Você só pode manipular um item no topo de uma pilha. Então, se você quiser atualizar um elemento que não está no topo do Stack, você terá que pop todos os itens acima dele. o pop() é um dos métodos primários do Stack. o pop() método não recebe argumentos. Ele remove o item no topo da pilha e o devolve.
// atualiza um objeto
Clientes.pop();
Clientes.pop();
Clientes.push("Ella James");
Customers.push("Jessica Brown");
System.out.println (Clientes);
O código acima imprime a seguinte saída no console:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella James, Jessica Brown]
Como você pode ver na saída, o código atualiza o sobrenome de Ella para James. Envolve um processo que retira itens da pilha até chegar ao objeto de destino. Em seguida, ele exibe o objeto de destino; o atualiza; e o empurra, junto com os itens que estavam no topo do item de destino, de volta à pilha. Você terá que usar um programa que realize operações como a acima, cada vez que desejar atualizar um item em seu Stack.
Excluindo um item de uma pilha
Para excluir um único item da estrutura de dados Stack, você pode usar novamente o método pop(). Se o item que você deseja excluir não estiver no topo, você pode destacar os itens no topo até chegar ao desejado.
Excluindo todos os itens em uma pilha
Para excluir todos os elementos de uma pilha, você pode usar um Java while loop com o método pop() para excluir os elementos um de cada vez. Uma abordagem mais eficiente, no entanto, é usar o Claro() método. o Claro() é aquele que a classe Stack herda da classe Vector. Não recebe argumentos, não retorna nada, mas simplesmente remove todos os elementos da estrutura de dados Stack.
// exclui todos os itens de uma pilha
Clientes.clear();
System.out.println (Customers.empty());
O código acima exclui todos os itens da pilha de clientes. Em seguida, usa o vazio() método para verificar se a pilha está vazia. o vazio() é outro método primário da classe de pilha Java. Não aceita argumentos e retorna um valor booleano. Este método retorna true se o Stack estiver vazio e false caso contrário.
O código acima imprime a seguinte saída no console:
verdadeiro
Aplicações práticas para a estrutura de dados de pilha
A estrutura de dados Stack é muito restritiva. Ele não oferece tanta flexibilidade no processamento de dados quanto outras estruturas de dados. Isso levanta a questão: quando você deve usar a estrutura de dados Stack?
A estrutura de dados Stack é ideal para aplicativos que exigem processamento de dados em ordem inversa. Esses incluem:
- Um aplicativo que verifica se uma palavra é um palíndromo.
- Um aplicativo que converte números decimais em números binários.
- Aplicativos que permitem aos usuários desfazer.
- Jogos que permitem ao usuário voltar a movimentos anteriores, como um jogo de xadrez.