Pila de Caracteres

04/Mar/2016 Java , Deja un comentario

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.

  1. Stack<Character> pila = new Stack<Character>();
  2. pila.push('a');
  3. pila.push('b');
  4. pila.push('c');
  5. 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.

  1. public class PilaCaracteres {
  2. final StringBuilder sb = new StringBuilder();
  3. }

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

  1. public void push(char ch) {
  2. sb.append(ch);
  3. }

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.

  1. int last = sb.length() -1;
  2. char ch= sb.charAt(last);

Y eliminar dicho caracter:

  1. sb.setLength(last);

El código del método .pop() nos quedaría de la siguiente forma:

  1. public char pop() {
  2. int last = sb.length() -1;
  3. char ch= sb.charAt(last);
  4. sb.setLength(last);
  5. return ch;
  6. }

Ya solo nos quedará utilizar la pila de caracteres que hemos creado de la misma forma que cuando definimos el Stack:

  1. PilaCaracteres pila2 = new PilaCaracteres();
  2. pila2.push('a');
  3. pila2.push('b');
  4. pila2.push('c');
  5. System.out.println(pila2.pop());

Vídeos sobre Java


¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*