Dúvida java (pilha)

class Main {
public static void main(String[] args) {
Stack pilha = new Stack();
pilha.push(4);
pilha.push(7);
pilha.push(pilha.pop());
pilha.pop();
pilha.push(8);
pilha.push(pilha.pop());
pilha.peek ();
System.out.println(pilha.peek());
}
}

Alguém pode me explicar o que esse código faz e qual resultado ?

push significa “empilhar”, ou seja, colocar algo no topo da pilha.

pop significa “desempilhar”, ou seja, remover o que está no topo da pilha.

peek significa “olhar” o que está no topo da pilha, mas sem remover, deixando lá.

É só fazer no papel o exemplo que vai entender o que está acontecendo.

  • empilha o valor 4
  • empilha o valor 7
  • empilha o valor removido do topo da pilha
  • remove o valor do topo da pilha
  • empilha o valor 8
  • empilha o valor removido do topo da pilha
  • olha o que tem no topo da pilha
  • escreve o valor que tem no topo da pilha

Essa classe é java.util.Stack? Se for, sugiro que leia a documentação e veja o que cada método faz.

Aliás, vc tentou rodar o código? Qual foi o resultado?

Dito isso, pop remove o valor do topo da pilha, e push adiciona. Por isso pilha.push(pilha.pop()); não faz muito sentido: vc remove e logo em seguida adiciona de novo…

Sim não faz sentido, e uma questão de concurso.

resposta dela e 8

so n entendo esse empilha o valor removido do topo da pilha na segunda linha, sendo que não foi removido nada até a linha, mas e questão de concurso isso, não faz sentido.

pilha.push(7);
pilha.push(pilha.pop());

Fez push do 7

Depois chamou novamente o push, passando como parâmetro a chama ao pop

Primeiro o pop vai remover e retornar o valor 7

Aí o 7 é passado para o push empilhar novamente