การเริ่มต้นอาร์เรย์ใน Java

1. ภาพรวม

ในบทช่วยสอนฉบับย่อนี้เราจะดูวิธีต่างๆที่เราสามารถเริ่มต้นอาร์เรย์และความแตกต่างเล็กน้อยระหว่างสิ่งเหล่านี้

2. ทีละองค์ประกอบ

เริ่มต้นด้วยวิธีง่ายๆแบบวนซ้ำ:

for (int i = 0; i < array.length; i++) { array[i] = i + 2; }

และมาดูกันว่าเราจะเริ่มต้นอาร์เรย์หลายมิติทีละองค์ประกอบได้อย่างไร:

for (int i = 0; i < 2; i++) { for (int j = 0; j < 5; j++) { array[i][j] = j + 1; } }

3. ในช่วงเวลาของการประกาศ

ตอนนี้เริ่มต้นอาร์เรย์ในเวลาที่ประกาศ:

String array[] = new String[] { "Toyota", "Mercedes", "BMW", "Volkswagen", "Skoda" };

ในขณะที่สร้างอินสแตนซ์อาร์เรย์เราไม่จำเป็นต้องระบุประเภท:

int array[] = { 1, 2, 3, 4, 5 };

โปรดทราบว่าไม่สามารถเริ่มต้นอาร์เรย์ได้หลังจากการประกาศโดยใช้วิธีนี้ การพยายามดำเนินการดังกล่าวจะทำให้เกิดข้อผิดพลาดในการคอมไพล์

4. การใช้Arrays.fill ()

java.util.Arraysชั้นจะมีวิธีการหลายวิธีการตั้งชื่อเติม ()ซึ่งยอมรับความแตกต่างของการขัดแย้งและกรอกอาร์เรย์ทั้งที่มีมูลค่าเท่ากัน:

long array[] = new long[5]; Arrays.fill(array, 30);

วิธีนี้ยังมีทางเลือกอีกหลายทางซึ่งกำหนดช่วงของอาร์เรย์เป็นค่าเฉพาะ:

int array[] = new int[5]; Arrays.fill(array, 0, 3, -50);

โปรดสังเกตว่าวิธีนี้ยอมรับอาร์เรย์ดัชนีขององค์ประกอบแรกจำนวนองค์ประกอบและค่า

5. การใช้Arrays.copyOf ()

วิธีArrays.copyOf ()สร้างอาร์เรย์ใหม่โดยคัดลอกอาร์เรย์อื่น เมธอดนี้มีโอเวอร์โหลดจำนวนมากซึ่งยอมรับอาร์กิวเมนต์ประเภทต่างๆ

มาดูตัวอย่างสั้น ๆ :

int array[] = { 1, 2, 3, 4, 5 }; int[] copy = Arrays.copyOf(array, 5);

หมายเหตุบางประการที่นี่:

  • เมธอดยอมรับอาร์เรย์ต้นทางและความยาวของสำเนาที่จะสร้าง
  • หากความยาวมากกว่าความยาวของอาร์เรย์ที่จะคัดลอกองค์ประกอบพิเศษจะเริ่มต้นโดยใช้ค่าเริ่มต้น
  • หากอาร์เรย์ต้นทางไม่ได้รับการเตรียมใช้งานNullPointerExceptionจะถูกโยนทิ้ง
  • ถ้าความยาวอาร์เรย์ต้นทางเป็นลบดังนั้นNegativeArraySizeExceptionจะถูกโยนทิ้ง

6. การใช้Arrays.setAll ()

วิธีArrays.setAll ()ตั้งค่าองค์ประกอบทั้งหมดของอาร์เรย์โดยใช้ฟังก์ชันเครื่องกำเนิดไฟฟ้า:

int[] array = new int[20]; Arrays.setAll(array, p -> p > 9 ? 0 : p); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

หากฟังก์ชันเครื่องกำเนิดไฟฟ้าเป็นโมฆะNullPointerExceptionจะถูกโยนทิ้ง

7. การใช้ArrayUtils.clone ()

สุดท้ายให้ใช้ArrayUtils.clone () API จาก Apache Commons Lang 3 ซึ่งเริ่มต้นอาร์เรย์โดยการสร้างสำเนาโดยตรงของอาร์เรย์อื่น:

char[] array = new char[] {'a', 'b', 'c'}; char[] copy = ArrayUtils.clone(array);

โปรดทราบว่าวิธีนี้มีมากเกินไปสำหรับประเภทดั้งเดิมทั้งหมด

8. สรุป

ในบทความนี้เราได้สำรวจวิธีต่างๆในการเริ่มต้นอาร์เรย์ใน Java

และเช่นเคยโค้ดเวอร์ชันเต็มสามารถใช้ได้บน GitHub