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