Khám phá lớp StringBuilder
Có một công cụ mạnh mẽ trong Java giúp chúng ta làm việc với chuỗi một cách linh hoạt hơn - đó là lớp StringBuilder. Lớp này giống với lớp String, nhưng khác biệt quan trọng là chúng ta có thể sửa đổi chuỗi được tạo ra bởi lớp StringBuilder.
Bên trong, lớp StringBuilder xử lý chuỗi giống như một mảng có độ dài thay đổi và chứa các ký tự. Bạn có thể thay đổi độ dài và nội dung của chuỗi thông qua các phương thức của lớp StringBuilder.
Trong trường hợp bạn cần nối một số lượng lớn chuỗi, việc sử dụng lớp StringBuilder có thể hiệu quả hơn so với việc sử dụng lớp String. Tuy nhiên, từ Java SE 9, việc nối chuỗi đã được tối ưu hóa, làm cho việc nối chuỗi trở nên hiệu quả hơn so với việc sử dụng lớp StringBuilder.
Độ dài và dung lượng
Lớp StringBuilder cung cấp hai phương thức quan trọng để làm việc với độ dài và dung lượng của chuỗi.
Phương thức length() trả về độ dài của chuỗi, còn phương thức capacity() trả về dung lượng của trình tạo chuỗi. Dung lượng luôn lớn hơn hoặc bằng độ dài của chuỗi và tự động mở rộng khi cần thiết để chứa thêm phần tử.
Bạn có thể tạo trình tạo chuỗi với dung lượng ban đầu được chỉ định bằng cách sử dụng các hàm tạo của lớp StringBuilder.
Thao tác với StringBuilder
Lớp StringBuilder cung cấp nhiều phương thức hữu ích để làm việc với chuỗi. Một số phương thức chính bao gồm:
- Phương thức append(): Cho phép thêm bất kỳ loại dữ liệu nào vào trình tạo chuỗi.
- Phương thức insert(): Cho phép chèn dữ liệu vào một vị trí đã cho trong trình tạo chuỗi.
- Phương thức delete(): Xóa một phần của chuỗi trong trình tạo chuỗi.
- Phương thức replace(): Thay thế các ký tự trong chuỗi.
- Phương thức reverse(): Đảo ngược chuỗi.
- Phương thức toString(): Chuyển đổi trình tạo chuỗi thành chuỗi.
Lưu ý rằng bạn có thể sử dụng các phương thức của lớp String trên đối tượng StringBuilder bằng cách chuyển đổi trình tạo chuỗi thành chuỗi bằng phương thức toString() trước.
Thực hành với StringBuilder
Chương trình StringDemo là một ví dụ tiêu biểu về việc sử dụng StringBuilder thay vì String để tối ưu hóa hiệu suất. Nếu bạn muốn đảo ngược một chuỗi đối xứng, bạn có thể sử dụng phương thức reverse() trong lớp StringBuilder. Điều này giúp mã trở nên đơn giản và dễ đọc hơn.
Lưu ý rằng khi in một trình tạo chuỗi, chúng ta có thể sử dụng câu lệnh System.out.println(sb) mà không cần gọi sb.toString() bởi vì nó được gọi ngầm.
Đối với các tác vụ đòi hỏi đồng bộ hóa, chúng ta có thể sử dụng lớp StringBuffer, tương tự như lớp StringBuilder, nhưng an toàn cho luồng.