Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

Java Program แปลง ArrayList เป็น String และกลับกัน

การแปลง 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)