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

วิธีแปลง LinkedList เป็น Array ใน Java

ใช้เมธอด toArray() ของ LinkedList (มาจาก Collection Interface) มี 2 รูปแบบ

1. toArray() -> Object[] (ต้อง Cast เอง)

import java.util.Arrays;
import java.util.LinkedList;

public class LinkedListToArray {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        list.add("JavaFX");
        list.add("Java");
        list.add("WebGL");
        list.add("OpenCV");
        
        // toArray() คืน Object[]
        Object[] objArray = list.toArray();
        
        // Cast เป็น String[] เอง
        String[] strArray = new String[objArray.length];
        for (int i = 0; i < objArray.length; i++) {
            strArray[i] = (String) objArray[i];
        }
        
        System.out.println(Arrays.toString(strArray));
    }
}

2. toArray(T[] a) -> T[] (Type-Safe, แนะนำ)

// ส่ง Array ขนาด 0 เข้าไป จะได้ Array ชนิดที่ถูกต้องกลับมา
String[] strArray = list.toArray(new String[0]);
// Java 11+ ใช้ Method Reference
String[] strArray11 = list.toArray(String[]::new);

System.out.println(Arrays.toString(strArray));

ผลลัพธ์

[JavaFX, Java, WebGL, OpenCV]

คำอธิบาย

  • toArray() ไม่มี Argument -> คืน Object[] ต้อง Cast เอง
  • toArray(new String[0]) - ส่ง Array ขนาด 0 เป็น Template -> คืน String[] โดยตรง (Type-Safe)
  • toArray(String[]::new) - Java 11+ ใช้ Constructor Reference สะดวกกว่า
  • ลำดับ Element คงเดิม (First to Last)

Performance Note

toArray(new String[0]) สร้าง Array ใหม่ขนาดเท่ากับ List Size (Optimal) ไม่ต้องสร้าง Array ใหญ่ก่อนแล้ว Trim