Neste tutorial, aprenderemos sobre a classe Java Stack e seus métodos com a ajuda de exemplos.
A estrutura de coleções Java tem uma classe chamada Stack
que fornece a funcionalidade da estrutura de dados da pilha.
A Stack
classe estende a Vector
classe.
Implementação de pilha
Na pilha, os elementos são armazenados e acessados da maneira Last In First Out . Ou seja, os elementos são adicionados ao topo da pilha e removidos do topo da pilha.
Criação de uma pilha
Para criar uma pilha, devemos java.util.Stack
primeiro importar o pacote. Depois de importar o pacote, aqui está como podemos criar uma pilha em Java.
Stack stacks = new Stack();
Aqui, Type
indica o tipo da pilha. Por exemplo,
// Create Integer type stack Stack stacks = new Stack(); // Create String type stack Stack stacks = new Stack();
Métodos de pilha
Como Stack
estende a Vector
classe, ele herda todos os métodos Vector
. Para aprender sobre diferentes Vector
métodos, visite Java Vector Class.
Além desses métodos, a Stack
classe inclui mais 5 métodos que a distinguem de Vector
.
Método push ()
Para adicionar um elemento ao topo da pilha, usamos o push()
método. Por exemplo,
import java.util.Stack; class Main ( public static void main(String() args) ( Stack animals= new Stack(); // Add elements to Stack animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Stack: " + animals); ) )
Resultado
Pilha: (cachorro, cavalo, gato)
Método pop ()
Para remover um elemento do topo da pilha, usamos o pop()
método. Por exemplo,
import java.util.Stack; class Main ( public static void main(String() args) ( Stack animals= new Stack(); // Add elements to Stack animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Initial Stack: " + animals); // Remove element stacks String element = animals.pop(); System.out.println("Removed Element: " + element); ) )
Resultado
Pilha inicial: (cão, cavalo, gato) Elemento removido: gato
Método peek ()
O peek()
método retorna um objeto do topo da pilha. Por exemplo,
import java.util.Stack; class Main ( public static void main(String() args) ( Stack animals= new Stack(); // Add elements to Stack animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Stack: " + animals); // Access element from the top String element = animals.peek(); System.out.println("Element at top: " + element); ) )
Resultado
Pilha: (Cachorro, Cavalo, Gato) Elemento no topo: Gato
método search ()
Para pesquisar um elemento na pilha, usamos o search()
método. Ele retorna a posição do elemento do topo da pilha. Por exemplo,
import java.util.Stack; class Main ( public static void main(String() args) ( Stack animals= new Stack(); // Add elements to Stack animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Stack: " + animals); // Search an element int position = animals.search("Horse"); System.out.println("Position of Horse: " + position); ) )
Resultado
Pilha: (Cão, Cavalo, Gato) Posição do Cavalo: 2
Método empty ()
Para verificar se uma pilha está vazia ou não, usamos o empty()
método. Por exemplo,
import java.util.Stack; class Main ( public static void main(String() args) ( Stack animals= new Stack(); // Add elements to Stack animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Stack: " + animals); // Check if stack is empty boolean result = animals.empty(); System.out.println("Is the stack empty? " + result); ) )
Resultado
Pilha: (Cachorro, Cavalo, Gato) A pilha está vazia? falso
Use ArrayDeque em vez de Stack
A Stack
classe fornece a implementação direta da estrutura de dados da pilha. No entanto, é recomendável não usá-lo. Em vez disso, use a ArrayDeque
classe (implementa a Deque
interface) para implementar a estrutura de dados da pilha em Java.
Para saber mais, visite:
- Java ArrayDeque
- Por que usar Deque em vez de Stack?