Java - อาร์เรย์
Java จัดเตรียมโครงสร้างข้อมูลคือ arrayซึ่งจัดเก็บคอลเลกชันตามลำดับขนาดคงที่ขององค์ประกอบประเภทเดียวกัน อาร์เรย์ใช้ในการจัดเก็บชุดข้อมูล แต่มักจะมีประโยชน์มากกว่าที่จะคิดว่าอาร์เรย์เป็นชุดของตัวแปรประเภทเดียวกัน
แทนที่จะประกาศตัวแปรเดี่ยวเช่น number0, number1, ... และ number99 คุณประกาศตัวแปรอาร์เรย์หนึ่งตัวเช่นตัวเลขและใช้ตัวเลข [0], ตัวเลข [1] และ ... , ตัวเลข [99] เพื่อแสดง ตัวแปรแต่ละตัว
บทช่วยสอนนี้แนะนำวิธีการประกาศตัวแปรอาร์เรย์สร้างอาร์เรย์และประมวลผลอาร์เรย์โดยใช้ตัวแปรที่จัดทำดัชนี
การประกาศตัวแปรอาร์เรย์
ในการใช้อาร์เรย์ในโปรแกรมคุณต้องประกาศตัวแปรเพื่ออ้างอิงอาร์เรย์และคุณต้องระบุประเภทของอาร์เรย์ที่ตัวแปรสามารถอ้างอิงได้ นี่คือไวยากรณ์สำหรับการประกาศตัวแปรอาร์เรย์ -
ไวยากรณ์
dataType[] arrayRefVar; // preferred way.
or
dataType arrayRefVar[]; // works but not preferred way.
Note - สไตล์ dataType[] arrayRefVarเป็นที่ต้องการ รูปแบบdataType arrayRefVar[] มาจากภาษา C / C ++ และถูกนำมาใช้ใน Java เพื่อรองรับโปรแกรมเมอร์ C / C ++
ตัวอย่าง
ตัวอย่างโค้ดต่อไปนี้เป็นตัวอย่างของไวยากรณ์นี้ -
double[] myList; // preferred way.
or
double myList[]; // works but not preferred way.
การสร้างอาร์เรย์
คุณสามารถสร้างอาร์เรย์โดยใช้ตัวดำเนินการใหม่ด้วยไวยากรณ์ต่อไปนี้ -
ไวยากรณ์
arrayRefVar = new dataType[arraySize];
ข้อความข้างต้นทำสองสิ่ง -
สร้างอาร์เรย์โดยใช้ dataType [arraySize] ใหม่
กำหนดการอ้างอิงของอาร์เรย์ที่สร้างขึ้นใหม่ให้กับตัวแปร arrayRefVar
การประกาศตัวแปรอาร์เรย์การสร้างอาร์เรย์และการกำหนดการอ้างอิงของอาร์เรย์ให้กับตัวแปรสามารถรวมกันในคำสั่งเดียวดังที่แสดงด้านล่าง -
dataType[] arrayRefVar = new dataType[arraySize];
หรือคุณสามารถสร้างอาร์เรย์ได้ดังนี้ -
dataType[] arrayRefVar = {value0, value1, ..., valuek};
องค์ประกอบอาร์เรย์สามารถเข้าถึงได้ผ่านไฟล์ index. ดัชนีอาร์เรย์เป็นแบบ 0 นั่นคือพวกมันเริ่มจาก 0 ถึงarrayRefVar.length-1.
ตัวอย่าง
คำสั่งต่อไปนี้ประกาศตัวแปรอาร์เรย์ myList สร้างอาร์เรย์ 10 องค์ประกอบประเภทคู่และกำหนดการอ้างอิงไปยัง myList -
double[] myList = new double[10];
ภาพต่อไปนี้แสดงถึงอาร์เรย์ myList ที่นี่ myList มีค่าสองค่าสิบค่าและดัชนีอยู่ระหว่าง 0 ถึง 9
อาร์เรย์การประมวลผล
เมื่อประมวลผลองค์ประกอบอาร์เรย์เรามักใช้อย่างใดอย่างหนึ่ง for ห่วงหรือ foreach วนซ้ำเนื่องจากองค์ประกอบทั้งหมดในอาร์เรย์เป็นประเภทเดียวกันและทราบขนาดของอาร์เรย์
ตัวอย่าง
นี่คือตัวอย่างที่สมบูรณ์ที่แสดงวิธีการสร้างเริ่มต้นและประมวลผลอาร์เรย์ -
public class TestArray {
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5};
// Print all the array elements
for (int i = 0; i < myList.length; i++) {
System.out.println(myList[i] + " ");
}
// Summing all elements
double total = 0;
for (int i = 0; i < myList.length; i++) {
total += myList[i];
}
System.out.println("Total is " + total);
// Finding the largest element
double max = myList[0];
for (int i = 1; i < myList.length; i++) {
if (myList[i] > max) max = myList[i];
}
System.out.println("Max is " + max);
}
}
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
เอาต์พุต
1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5
ลูปหน้า
JDK 1.5 เปิดตัวใหม่สำหรับลูปที่เรียกว่า foreach loop หรือปรับปรุงสำหรับลูปซึ่งช่วยให้คุณสามารถสำรวจอาร์เรย์ที่สมบูรณ์ตามลำดับโดยไม่ต้องใช้ตัวแปรดัชนี
ตัวอย่าง
รหัสต่อไปนี้แสดงองค์ประกอบทั้งหมดในอาร์เรย์ myList -
public class TestArray {
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5};
// Print all the array elements
for (double element: myList) {
System.out.println(element);
}
}
}
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
เอาต์พุต
1.9
2.9
3.4
3.5
การส่งอาร์เรย์ไปยังวิธีการ
เช่นเดียวกับที่คุณสามารถส่งผ่านค่าประเภทดั้งเดิมไปยังเมธอดคุณยังสามารถส่งอาร์เรย์ไปยังเมธอดได้อีกด้วย ตัวอย่างเช่นวิธีการต่อไปนี้แสดงองค์ประกอบในไฟล์int อาร์เรย์ -
ตัวอย่าง
public static void printArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
คุณสามารถเรียกใช้โดยส่งอาร์เรย์ ตัวอย่างเช่นคำสั่งต่อไปนี้เรียกใช้เมธอด printArray เพื่อแสดง 3, 1, 2, 6, 4 และ 2 -
ตัวอย่าง
printArray(new int[]{3, 1, 2, 6, 4, 2});
การส่งคืนอาร์เรย์จากวิธีการ
เมธอดอาจส่งคืนอาร์เรย์ ตัวอย่างเช่นวิธีการต่อไปนี้จะส่งคืนอาร์เรย์ที่เป็นการกลับรายการของอาร์เรย์อื่น -
ตัวอย่าง
public static int[] reverse(int[] list) {
int[] result = new int[list.length];
for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
result[j] = list[i];
}
return result;
}
คลาสอาร์เรย์
คลาส java.util.Arrays มีวิธีการแบบคงที่ต่างๆสำหรับการเรียงลำดับและค้นหาอาร์เรย์เปรียบเทียบอาร์เรย์และการเติมองค์ประกอบอาร์เรย์ วิธีการเหล่านี้มีมากเกินไปสำหรับประเภทดั้งเดิมทั้งหมด
ซีเนียร์ | วิธีการและคำอธิบาย |
---|---|
1 | public static int binarySearch(Object[] a, Object key) ค้นหาอาร์เรย์ของ Object ที่ระบุ (Byte, Int, double และอื่น ๆ ) สำหรับค่าที่ระบุโดยใช้อัลกอริทึมการค้นหาแบบไบนารี ต้องเรียงอาร์เรย์ก่อนที่จะทำการเรียกนี้ สิ่งนี้จะส่งคืนดัชนีของคีย์การค้นหาหากมีอยู่ในรายการ มิฉะนั้นจะส่งกลับ (- (จุดแทรก + 1)) |
2 | public static boolean equals(long[] a, long[] a2) ส่งคืนค่าจริงถ้าอาร์เรย์ของ longs ที่ระบุสองอาร์เรย์เท่ากัน อาร์เรย์สองอาร์เรย์จะถือว่าเท่ากันหากอาร์เรย์ทั้งสองมีจำนวนองค์ประกอบเท่ากันและคู่ขององค์ประกอบที่เกี่ยวข้องทั้งหมดในอาร์เรย์ทั้งสองมีค่าเท่ากัน สิ่งนี้จะคืนค่าเป็นจริงหากอาร์เรย์ทั้งสองเท่ากัน วิธีการเดียวกันนี้สามารถใช้ได้กับชนิดข้อมูลดั้งเดิมอื่น ๆ ทั้งหมด (Byte, short, Int ฯลฯ ) |
3 | public static void fill(int[] a, int val) กำหนดค่า int ที่ระบุให้กับแต่ละองค์ประกอบของอาร์เรย์ของ ints ที่ระบุ วิธีการเดียวกันนี้สามารถใช้ได้กับชนิดข้อมูลดั้งเดิมอื่น ๆ ทั้งหมด (Byte, short, Int ฯลฯ ) |
4 | public static void sort(Object[] a) จัดเรียงอาร์เรย์ของออบเจ็กต์ที่ระบุเป็นลำดับจากน้อยไปมากตามลำดับขององค์ประกอบตามธรรมชาติ วิธีการเดียวกันนี้สามารถใช้ได้กับชนิดข้อมูลดั้งเดิมอื่น ๆ ทั้งหมด (Byte, short, Int ฯลฯ ) |