• Hãy ủng hộ PhienBanMoi.Com bằng cách LIKE trang FANPAGE , GOOGLE+ dưới mỗi bài viết hoặc chia sẻ website nếu thấy hữu ích. Trân trọng cảm ơn!
  • [Thông Báo] Tuyển thành viên viết bài KIẾM TIỀN trên PhienBanMoi.Com


    Nhằm mục đích phát triển Phienbanmoi.com hơn nữa, có thêm các bài viết thông tin thực sự hữu ích từ những thành viên tích cực. BQT đã quyến định tạo ra cơ hội kiếm tiền từ các bài viết được đăng tải và chia sẻ trên diễn đàn

Cách tốt nhất để xóa StringBuilder hoặc StringBuffer trong Java?

No Nguyễn

Admin
Thành viên BQT
Tham gia
3/2/12
Bài viết
1,450
Nơi ở
Thanh Xuân - Hà Nội

Download-Button
Tải xuống ngay
Ví dụ rõ ràng về Java StringBuilder cho thấy cách xóa nội dung của đối tượng StringBuilder hoặc StringBuffer. Ví dụ này cũng cho thấy cách làm trống đối tượng StringBuilder / StringBuffer trong Java.
Làm cách nào để xóa StringBuilder hoặc StringBuffer trong Java?
Giả sử bạn có một đối tượng StringBuilder đang được sử dụng bên trong một vòng lặp và bạn muốn làm trống nội dung của nó cho mỗi lần lặp của vòng lặp. Trong các trường hợp như vậy, bạn có thể xóa nội dung của StringBuilder bằng các cách đã cho bên dưới.
1) Xóa StringBuilder bằng cách gán một đối tượng mới
Phương thức này gán một đối tượng StringBuilder mới không có nội dung cho tham chiếu hiện có. Đây không phải là chính xác xóa cùng một đối tượng, nhưng để gán một đối tượng trống mới cho cùng một tham chiếu.
Thí dụ:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class JavaStringBufferClearEmptyExample {

public static void main(String[] args) {

StringBuilder sbStr = null;

for(int i = 1; i <= 5; i++){

//clear the contents from previous iteration
sbStr = new StringBuilder();
sbStr.append(i);

System.out.print(sbStr);
}
}
}
Đầu ra


112345

2) Xóa StringBuilder bằng phương thức delete

Bạn có thể sử dụng deletephương thức của lớp StringBuilder để xóa có chọn lọc một số ký tự khỏi nó hoặc bạn có thể sử dụng nó để làm empty nội dung
1public void delete(int start, int end)
Các deletephương pháp chấp nhận hai thông số, chỉ số bắt đầu và chỉ số cuối. Để xóa nội dung, chúng tôi sẽ cung cấp 0 dưới dạng chỉ mục bắt đầu và độ dài của đối tượng StringBuilder dưới dạng chỉ mục kết thúc để xóa mọi thứ nó có.

Thí dụ:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class JavaStringBufferClearEmptyExample {

public static void main(String[] args) {

StringBuilder sbStr = new StringBuilder();
String strDays[] = {"Sun", "Mon", "Tuesday", "Wed"};

for(int i = 0; i < strDays.length; i++){

//delete all contents from previous iteration
sbStr.delete(0, sbStr.length());

sbStr.append(strDays);

System.out.print(sbStr);
}
}
}



Đầu ra:


1
2
3
4
Sun
Mon
Tuesday
Wed
Như bạn có thể thấy từ đầu ra, nội dung của StringBuilder sẽ bị xóa khi bắt đầu vòng lặp.

3) Xóa StringBuilder bằng phương thức setLength(0)
Bạn có thể sử dụng setLengthphương thức để xóa nội dung của đối tượng StringBuilder.


1public void setLength(int newLength)
Để xóa nội dung của StringBuilder, chúng ta sẽ chuyển 0 theo độ dài mới như trong ví dụ dưới đây.

Thí dụ:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class JavaStringBufferClearEmptyExample {

public static void main(String[] args) {

StringBuilder sbStr = new StringBuilder();
String strDays[] = {"Sun", "Mon", "Tuesday", "Wed"};

for(int i = 0; i < strDays.length; i++){

//empty StringBuilder
sbStr.setLength(0);

sbStr.append(strDays);

System.out.println(sbStr);
}
}
}




Đầu ra:


1
2
3
4
Sun
Mon
Tuesday
Wed


Cách tốt nhất để xóa StringBuilder là gì?

Bây giờ chúng ta đã thấy ba phương thức khác nhau để xóa StringBuilder, bạn có thể có câu hỏi này. Chà, cách tốt nhất để xóa StringBuilder là sử dụng setLengthphương thức (tùy chọn thứ 3).
Tại sao? Bởi vì tùy chọn đầu tiên tạo ra một đối tượng StringBuilder mới cho mỗi lần lặp của vòng lặp. Tạo đối tượng là một hoạt động tốn kém vì nó liên quan đến việc phân bổ bộ nhớ mới cho đối tượng mới. Thêm vào đó, bộ sưu tập rác phải thu thập các đối tượng không sử dụng cũ. Bạn nên tránh tùy chọn này nếu số lần lặp quá nhiều do tác động hiệu suất mà nó có thể có.
Tùy chọn 2 ( deletephương thức) phân bổ nội bộ bộ đệm mới với độ dài đã chỉ định và sau đó sao chép nội dung đã sửa đổi của bộ đệm StringBuilder sang bộ đệm mới. Đây lại là một hoạt động tốn kém nếu số lần lặp quá cao.
Tùy chọn 3 là lựa chọn tốt nhất vì nó không liên quan đến bất kỳ phân bổ và thu gom rác mới nào. Các setLengthphương pháp chỉ reset biến chiều dài đệm bên trong để 0. trú đệm ban đầu trong bộ nhớ để cấp phát bộ nhớ mới là không cần thiết và do đó nó là cách nhanh nhất để xóa StringBuilder.
 

Download-Button
Tải xuống ngay