Как определить стек char?
Как определить стек char в java? Например, для создания String-стека я могу использовать такую конструкцию:
Stack <String> stack= new Stack <String> ();
Но когда я пытаюсь поместить char вместо String, я получил ошибку:
Syntax error on token "char", Dimensions expected after this token
Ответы
Ответ 1
Использование коллекции char довольно неэффективно. (но он работает). Вы можете обернуть StringBuilder, который также является изменчивой коллекцией 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();
}
}
Ответ 2
Примитивные типы, такие как char
, не могут использоваться в качестве параметров типа в Java. Вам нужно использовать тип оболочки:
Stack<Character> stack = new Stack<Character>();
Ответ 3
char
является одним из примитивных типов данных в Java, которые нельзя использовать в дженериках. Вы можете, однако, заменить обертку java.lang.Character, как в:
Stack<Character> stack = new Stack<Character>();
Вы можете назначить Character
для char
или наоборот; Java будет autobox значение для вас.