2012-01-05 29 views
15

¿Cómo definir una pila de caracteres en java? Por ejemplo, para crear una pila de cuerdas que puedo utilizar dicha construcción:¿Cómo definir una pila de pila?

Stack <String> stack= new Stack <String>(); 

Pero cuando estoy trato de poner carbón en lugar de cuerdas que tiene un error:

Syntax error on token "char", Dimensions expected after this token 

Respuesta

7

Usar una colección de caracteres es bastante ineficiente. (pero funciona) Puede envolver un StringBuilder que también es una colección mutable de char.

class CharStack { 
    final StringBuilder sb = new StringBuilder(); 

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

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

    public int size() { 
     return sb.length(); 
    } 
} 
+0

No estoy seguro acerca del método .append(). ¿Realmente funciona más rápido que la pila? –

+2

Si tiene un nuevo carácter (~ 16 bytes) y tiene que agregarlo a una pila (4 bytes por referencia) será mucho más grande que simplemente agregar un carácter (2 bytes) Incluso si tiene un carácter en caché, lo hará ser el doble de grande. Stack también es seguro para subprocesos, lo que lo hace un poco más lento. Puede agregar y eliminar char (s) en un StringBuilder sin crear ningún tipo de basura. (A menos que la "pila" sea más larga) –

+0

Muchas gracias) Entonces usaré tu solución –

46

tipos primitivos como char no puede ser utilizado como parámetros de tipo en Java. Es necesario utilizar el tipo de envoltorio:

Stack<Character> stack = new Stack<Character>();