Chuyển String[] → String đơn lẻ.
Cách 1: StringBuilder – Hiệu năng tốt, kiểm soát delimiter
String[] arr = {"Hello", " ", "World", "!"};
StringBuilder sb = new StringBuilder();
for (String s : arr) sb.append(s);
String result = sb.toString(); // "Hello World!"
Cách 2: Arrays.toString() – Debug nhanh, KHÔNG tùy biến delimiter
String result = Arrays.toString(arr);
// "[Hello, , World, !]" – có dấu ngoặc, dấu phẩy
⚠️ Không dùng cho production join string.
Cách 3: StringJoiner (Java 8+) – Chuẩn, hỗ trợ prefix/suffix/delimiter
import java.util.StringJoiner;
StringJoiner sj = new StringJoiner(", ", "[", "]"); // delim, prefix, suffix
for (String s : arr) sj.add(s);
String result = sj.toString(); // "[Hello, , World, !]"
Cách 4: String.join() (Java 8+) – Ngắn nhất cho delimiter đơn giản
String result = String.join(", ", arr); // "Hello, , World, !"
Cách 5: Stream API (Java 8+) – Linh hoạt
String result = String.join("", Arrays.stream(arr).toArray(String[]::new));
// hoặc
String result = Stream.of(arr).collect(Collectors.joining());
So sánh
| Phương pháp | Java version | Delimiter | Prefix/Suffix | Hiệu năng |
|---|---|---|---|---|
| StringBuilder loop | 1.0+ | Tự quản lý | Tự quản lý | ⭐⭐⭐⭐⭐ |
| Arrays.toString() | 1.5+ | Cố định (, ) | Cố định [ ] | ⭐⭐⭐ |
| StringJoiner | 8+ | Tùy chỉnh | Tùy chỉnh | ⭐⭐⭐⭐ |
| String.join() | 8+ | Tùy chỉnh | Không | ⭐⭐⭐⭐ |
| StreamCollectors | 8+ | Tùy chỉnh | Tùy chỉnh | ⭐⭐⭐ |
Ví dụ thực tế: CSV line
String[] fields = {"1001", "Nguyễn Văn An", "25", "Hà Nội"};
String csvLine = String.join(",", fields); // "1001,Nguyễn Văn An,25,Hà Nội"
Khuyến nghị: String.join(delim, arr) cho trường hợp đơn giản, StringJoiner khi cần prefix/suffix.