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

วิธีคัดลอกส่วนของอาร์เรย์ใน Java

วิธีที่ 1: ใช้ Arrays.copyOf()

เมธอด Arrays.copyOf(originalArray, newLength) คัดลอกจากต้นทางตั้งแต่ index 0 ถึง newLength-1

ตัวอย่าง

import java.util.Arrays;

public class CopyingSectionOfArray {
    public static void main(String[] args) {
        String[] str = new String[10];
        str[0] = "Java"; str[1] = "WebGL"; str[2] = "OpenCV";
        str[3] = "OpenNLP"; str[4] = "JOGL"; str[5] = "Hadoop";
        str[6] = "HBase"; str[7] = "Flume"; str[8] = "Mahout"; str[9] = "Impala";
        
        System.out.println("Original: " + Arrays.toString(str));
        String[] newArray = Arrays.copyOf(str, 5); // คัดลอก 5 ตัวแรก
        System.out.println("Copied: " + Arrays.toString(newArray));
    }
}

ผลลัพธ์

Original: [Java, WebGL, OpenCV, OpenNLP, JOGL, Hadoop, HBase, Flume, Mahout, Impala]
Copied: [Java, WebGL, OpenCV, OpenNLP, JOGL]

วิธีที่ 2: ใช้ Arrays.copyOfRange() (แนะนำสำหรับคัดลอกช่วงกลาง)

เมธอด Arrays.copyOfRange(originalArray, fromIndex, toIndex) คัดลอกจาก fromIndex (รวม) ถึง toIndex (ไม่รวม)

ตัวอย่าง

import java.util.Arrays;

public class CopyingSectionOfArray {
    public static void main(String[] args) {
        String[] str = new String[10];
        str[0] = "Java"; str[1] = "WebGL"; str[2] = "OpenCV";
        str[3] = "OpenNLP"; str[4] = "JOGL"; str[5] = "Hadoop";
        str[6] = "HBase"; str[7] = "Flume"; str[8] = "Mahout"; str[9] = "Impala";
        
        System.out.println("Original: " + Arrays.toString(str));
        String[] newArray = Arrays.copyOfRange(str, 2, 7); // index 2-6
        System.out.println("Copied: " + Arrays.toString(newArray));
    }
}

ผลลัพธ์

Original: [Java, WebGL, OpenCV, OpenNLP, JOGL, Hadoop, HBase, Flume, Mahout, Impala]
Copied: [OpenCV, OpenNLP, JOGL, Hadoop, HBase]

การเปรียบเทียบ

เมธอดใช้สำหรับพารามิเตอร์
copyOf()คัดลอกจากต้นทาง (prefix)(array, newLength)
copyOfRange()คัดลอกช่วงที่กำหนด(array, from, to)

หมายเหตุเพิ่มเติม

  • ทั้งสองเมธอดคืนค่า อาร์เรย์ใหม่ (shallow copy สำหรับออบเจ็กต์)
  • รองรับ primitive arrays (int[], double[], ฯลฯ) และ object arrays
  • หาก fromIndex < 0 หรือ toIndex > array.length จะโยน ArrayIndexOutOfBoundsException
  • Java 8+ สามารถใช้ Stream API: Arrays.stream(arr, from, to).toArray()