Como reescrever o método toString para exibir uma pilha?

Olá

Como posso rescrever o método toString na minha pilha para exibi-la no output.
Tenho o seguinte código:

public class Pilha {

    public int[] elementos;
    public int topo;

    public Pilha(int e) {
        elementos = new int[e];
        topo = -1;
    }

    public void inserir(int e) {
        if (!estaCheia()) {
            topo++;
            elementos[topo] = e;
        }

    }

    public boolean estaVazia() {
        return topo == -1;
    }

    public boolean estaCheia() {
        return this.topo == this.elementos.length - 1;
    }

    public int remover() {
        if (!estaVazia()) {
            return elementos[topo--];
        }
        return 0;

    }

    public int tamanho() {
        return this.elementos.length;
    }
}

Nesse caso eu queria exibir minha pilha instanciada na classe main

Usando Stack do próprio Java já é criada uma estrutura onde as pilhas são impressas no output como: [1, 2, 3] ou [1] se tiver apenas um valor.

Inserindo o toString:

    @Override
    public String toString() {
        return "Pilha{" + "elementos=" + elementos + ", topo=" + topo + '}';
    }

Só sai apenas o nome da classe.
Gostaria de algo que exibisse o array corretamente
Alguém pode me ajudar??

Faz assim:

@Override
public String toString() {
    StringBuilder sb = new StringBuilder("[");

    for (int i = 0; i <= this.topo; i++) {
        sb.append(this.elementos[i]);
        if (i < this.topo) sb.append(", ");
    }

    sb.append("]");

    return sb.toString();
}
2 curtidas

@wldomiciano Muito obrigado meu nobre, funcionou perfeitamente!!
Era exatamente assim que eu queria.
Valeu mesmo pela ajuda!!!
:grinning::grinning:

1 curtida