การแปลง ArrayList ↔ String
มี 2 กรณีหลัก: (1) ArrayList → String (2) String → ArrayList/Array
กรณีที่ 1: ArrayList → String
1. toString() - Built-in (รูปแบบ [a, b, c])
ArrayList list = new ArrayList<>(Arrays.asList("Java", "Python", "Scala"));
String str = list.toString(); // "[Java, Python, Scala]"
2. String.join() - ระบุ Delimiter เอง (Java 8+)
String joined = String.join(", ", list); // "Java, Python, Scala"
String csv = String.join(",", list); // "Java,Python,Scala"
3. Stream Collectors.joining()
String joined = list.stream()
.collect(Collectors.joining(" | ")); // "Java | Python | Scala"
4. StringBuilder (Manual, ประสิทธิภาพดี)
StringBuilder sb = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
sb.append(list.get(i));
if (i < list.size() - 1) sb.append(", ");
}
String result = sb.toString();
ตัวอย่างที่ 1: ArrayList → String
import java.util.ArrayList;
public class Demo {
public static void main(String[] args) {
System.out.println("The required packages have been imported");
ArrayList inputArray = new ArrayList<>();
inputArray.add("Java");
inputArray.add("Python");
inputArray.add("Scala");
inputArray.add("JavaScript");
System.out.println("The array is defined as: " + inputArray);
// toString() - default format
String resultString = inputArray.toString();
System.out.println("\nThe result string is: " + resultString);
// String.join() - custom delimiter
String customJoin = String.join(" | ", inputArray);
System.out.println("Custom join: " + customJoin);
}
}
ผลลัพธ์
The required packages have been imported
The array is defined as: [Java, Python, Scala, JavaScript]
The result string is: [Java, Python, Scala, JavaScript]
Custom join: Java | Python | Scala | JavaScript
กรณีที่ 2: String → Array/ArrayList
1. String → char[] (Character Array)
String inputString = "Java Program";
char[] charArray = inputString.toCharArray();
// หรือ manual
char[] resultArray = new char[inputString.length()];
for (int i = 0; i < inputString.length(); i++) {
resultArray[i] = inputString.charAt(i);
}
2. String → String[] (Split by Delimiter)
String csv = "Java,Python,Scala,JavaScript";
String[] parts = csv.split(","); // ["Java", "Python", "Scala", "JavaScript"]
// Regex split (หลาย delimiter)
String complex = "Java;Python|Scala,JavaScript";
String[] parts2 = complex.split("[,;|]");
3. String → ArrayList
// จาก String[]
String[] arr = {"Java", "Python", "Scala"};
ArrayList list = new ArrayList<>(Arrays.asList(arr));
// จาก String (split แล้วแปลง)
String csv = "Java,Python,Scala";
ArrayList list2 = new ArrayList<>(Arrays.asList(csv.split(",")));
ตัวอย่างที่ 2: String → char Array
public class Demo {
public static void main(String args[]) {
String inputString = "Java Program";
System.out.println("The string is defined as: " + inputString);
char[] resultArray = new char[inputString.length()];
for (int i = 0; i < inputString.length(); i++) {
resultArray[i] = inputString.charAt(i);
}
System.out.println("The array after conversion from string is: ");
for (char c : resultArray) {
System.out.print(c + " ");
}
}
}
ผลลัพธ์
The string is defined as: Java Program
The array after conversion from string is: J a v a P r o g r a m
สรุปตารางการแปลง
| ทิศทาง | เมธอด | ผลลัพธ์ | หมายเหตุ |
|---|---|---|---|
| List → String | list.toString() |
[a, b, c] | Format คงที่ มีวงเล็บ คอมม่า |
| List → String | String.join(",", list) |
a,b,c | ⭐ แนะนำ ระบุ Delimiter เองได้ |
| List → String | stream().collect(joining()) |
a,b,c | Functional, ยืดหยุ่น |
| String → char[] | str.toCharArray() |
['J','a','v','a'] | แยกเป็น Character |
| String → String[] | str.split(",") |
["a","b","c"] | แยกด้วย Delimiter/Regex |
| String → List | Arrays.asList(str.split(",")) |
[a, b, c] | Fixed-size list, ต้อง new ArrayList() ถ้าอยากเพิ่ม/ลบ |
ข้อควรระวัง
Arrays.asList()คืน Fixed-size List (ไม่สามารถ add/remove ได้) → ต้อง wrap ด้วยnew ArrayList<>(...)split()ใช้ Regex → ตัวอักษรพิเศษต้อง Escape (เช่นsplit("\\|"))toString()ของ ArrayList ใช้ format คงที่[elem1, elem2]ไม่สามารถปรับได้
สรุป
- ArrayList → String: ใช้ String.join() (Java 8+) สำหรับ Custom Format
- String → Array: ใช้ split() แยกด้วย Delimiter, toCharArray() แยก Character
- String → ArrayList: new ArrayList<>(Arrays.asList(str.split(...)))
- เลือกวิธีให้ตรง Use Case (Delimiter, Format, Performance)