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 ฯลฯ )