อาร์เรย์ (Array)

อาร์เรย์ (Array)

อาร์เรย์ (Array) หรือแถวลำดับ คือ ตัวแปรประเภทหนึ่งที่มีดัชนีกำกับตัวแปร ทำให้ตัวแปรเพียงตัวเดียวสามารถถูกเรียกใช้ได้หลายค่า โดยเรียกแต่ละค่าว่าสมาชิกย่อย และเก็บค่าได้แตกต่างกันตามค่าดัชนีที่กำกับสมาชิกย่อย แต่การกำหนดจำนวนดัชนีมีข้อจำกัด ตามขนาดของหน่วยความจำที่ระบบจะรับได้ ข้อมูลจะเก็บในรูปวัตถุแล้วมีตัวชี้ (Pointer) เพื่อชี้ไปยังสมาชิกย่อยแต่ละตัว จึงต้องจำกัดจำนวนสมาชิกให้อยู่ในขอบเขตตั้งแต่ครั้งแรกที่เริ่มต้นจองหน่วยความจำ

กรณีที่ 1                 int s1[] = new int[10000];  ใช้พื้นที่ 40,016 Bytes

กรณีที่ 2                 int s2[] = new int[10000];  ถ้าประกาศทั้ง s1 และ s2 จะใช้พื้นที่ 80,032 Bytes

กรณีที่ 3                 int s3[] = new int[20000];  ใช้พื้นที่ 80,016 Bytes

กรณีที่ 4                 long s4[] = new long[20000]; ใช้พื้นที่ 160,016 Bytes

ตัวอย่างข้อมูลในอาร์เรย์

0 1 2 3 4 5
abcd def ghijk jkl xyz eee

 

ตัวอย่าง 6.1 ประกาศตัวแปรอาร์เรย์ กำหนดค่า และเรียกมาแสดงผล

int x[] = {4,18,12};

System.out.println(“Amount of array = ” + x.length);

for (int i = 0; i < x.length; i++) {

System.out.println(“element “+i+” = “+x[i]);

}

ตัวอย่าง 6.2 การจัดเรียงข้อมูลในอาร์เรย์

int a[] = {5,-1,2};

java.util.Arrays.sort(a);

for (int i = 0; i < a.length; i++) System.out.print(a[i]); // – 125

String b[] = {“aa”,”Za”,”12″};

java.util.Arrays.sort(b);

for (int i = 0; i < b.length; i++) System.out.print(b[i]); // 12Zaaa

ตัวอย่าง 6.3 ตรวจสอบหน่วยความจำเมื่อใช้อาร์เรย์

Runtime r = Runtime.getRuntime();

r.gc();

System.out.println(r.totalMemory()); // 5177344

long f1 = r.freeMemory(); // can not use int

int s[] = new int[10000];

r.gc();

try{

Thread.currentThread().sleep(1000); //sleep for 1000 ms

} catch(Exception e) { }

System.out.println(f1 – r.freeMemory()); // 40016

}

ตัวอย่าง 6.4 จัดการกับอาร์เรย์ 2 มิติแบบคงที่

String a[][] = new String[2][3];

a[0][0] = “101”;

a[0][1] = “102”;

a[0][2] = “103”;

int i = 0;

a[1][i++] = “tom”;  // 1,0

a[1][i++] = “dang”; // 1,1

a[1][i++] = “boy”;  // 1,2

for (i = 0; i < a[0].length; i++) {

  System.out.println(“element of 0,”+i+” = “+a[0][i]);

}

for (i = 0; i < a[1].length; i++) {

  System.out.println(“element of 1,”+i+” = “+a[1][i]);

}