Si tenemos la necesidad de crear una pila de caracteres en Java podemos recurrir a la clase Stack para construir dicha pila. Si bien la clase Stack
solo maneja objetos como elementos a insertar en la pila y no tipos de datos primitivos. Es por ello que la codificación que deberíamos de tener es con elementos Character
.
La codificación de la pila de caracteres sería sencilla.
Stack pila = new Stack();
pila.push('a');
pila.push('b');
pila.push('c');
System.out.println(pila.pop());
Los métodos .push()
y .pop()
nos servirían para insertar y recuperar caracteres de la pila.
Si bien el uso de objetos Character
y de un Stack
puede parecer y resultar algo ineficiente.
En este ejemplo vamos a ver cómo podemos construir una pila de caracteres mediante un StringBuilder
y así manejemos directamente el tipo de dato primitivo char.
Lo primero será definir la variable StringBuilder
que simulará la pila.
public class PilaCaracteres {
final StringBuilder sb = new StringBuilder();
}
Ahora pasamos a codificar cada uno de los métodos.
Método push
Este método es sencillo ya que solo tendremos que hacer un .append()
sobre el StringBuilder
public void push(char ch) {
sb.append(ch);
}
Método pop
Este método es un poco más complicado, ya que lo que deberá de hacer es devolver el último carácter de la cadena.
int last = sb.length() -1;
char ch= sb.charAt(last);
Y eliminar dicho caracter:
sb.setLength(last);
El código del método .pop()
nos quedaría de la siguiente forma:
public char pop() {
int last = sb.length() -1;
char ch= sb.charAt(last);
sb.setLength(last);
return ch;
}
Ya solo nos quedará utilizar la pila de caracteres que hemos creado de la misma forma que cuando definimos el Stack
:
PilaCaracteres pila2 = new PilaCaracteres();
pila2.push('a');
pila2.push('b');
pila2.push('c');
System.out.println(pila2.pop());