2012-01-05 37 views
15

Làm thế nào để xác định một chồng char trong java? Ví dụ, để tạo một String chồng tôi có thể sử dụng xây dựng như:Làm thế nào để xác định một ngăn xếp char?

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

Nhưng khi tôi đang cố gắng để đưa char thay vì String tôi có một lỗi:

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

Trả lời

7

Sử dụng bộ sưu tập char khá kém hiệu quả. (nhưng nó hoạt động) Bạn có thể quấn một StringBuilder mà cũng là một bộ sưu tập có thể thay đổi của 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

Tôi không chắc chắn về phương thức .append(). Nó thực sự hoạt động nhanh hơn stack? –

+2

Nếu bạn có một ký tự mới (~ 16 byte) và bạn phải thêm nó vào một ngăn xếp (4 byte cho mỗi tham chiếu), nó sẽ lớn hơn nhiều so với việc thêm một char (2 byte) ngay cả khi bạn có ký tự được lưu trong bộ nhớ cache lớn gấp đôi. Stack cũng là thread an toàn mà làm cho nó hơi chậm hơn. Bạn có thể thêm và loại bỏ char (s) trong một StringBuilder mà không cần tạo bất kỳ rác nào. (Trừ khi "ngăn xếp" lâu hơn) –

+0

Cảm ơn rất nhiều) Sau đó, tôi sẽ sử dụng giải pháp của bạn –

46

loại nguyên thủy như char không thể được sử dụng làm tham số kiểu trong Java. Bạn cần phải sử dụng các loại wrapper:

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

char là một trong những kiểu dữ liệu nguyên thủy trong Java, which cannot be used in generics. Bạn có thể, tuy nhiên, thay thế các wrapper java.lang.Character, như trong:

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

Bạn có thể gán một Character đến một char hoặc cách khác xung quanh; Java sẽ autobox giá trị cho bạn.

Các vấn đề liên quan