javaでcharスタックを定義するには?例えば、文字列スタックを作るには、次のような構文が使えます。
Stack <String> stack= new Stack <String> ();
しかし、Stringの代わりにcharを書こうとすると、エラーが発生します。
Syntax error on token "char", Dimensions expected after this token
char` は Java のプリミティブなデータ型の 1 つで、 generics では使用できません です。しかし、次のようにラッパーの java.lang.Character で代用することは可能です。
Stack<Character> stack = new Stack<Character>();
また、Character
をchar
に代入することもできますし、その逆もできます。
charのコレクションを使うのはかなり非効率的です。(しかし、それは機能します) 同じくcharの変更可能なコレクションであるStringBuilderをラップすることができます。
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();
}
}